一道C语言习题!?大家帮帮忙!!!

来源:百度知道 编辑:UC知道 时间:2024/06/07 10:45:11
题目:阅读下面计算x-x^2+x^3-x^4+......+(-1)^(n-1)*x^n值的递归函数,将函数补充完善。
float px(float x,int n)
{
if(n==1)_________;
else return (x*(_________));
}

那两空填什么啊?特别是第二个。
递归调用函数我还不怎么会啊!!
拜托大家了~~~

an = x-x^2+x^3-x^4+......+(-1)^(n-1)*x^n
an+1 = x-x^2+x^3-x^4+......+(-1)^(n-1)*x^n+(-1)^n*x^(n+1)
=x(1- an)
所以第一个空是:x
第二个是 1- px(x, n-1)

求:x-x^2+x^3-x^4+......+(-1)^(n-1)*x^n
x提出后 就是(-1x)^0+(-1x)^1+(-1x)^2+......+(-1x)^(n-1)就是个等比数列
公比是 q=(-1x) 用求和公式啊
求和公式:Sn=nA1(q=1)
Sn=A1(1-q^n)/(1-q)
=(a1-a1q^n)/(1-q)
=a1/(1-q)-a1/(1-q)*q^n
(前提:q不等于 1)

Sn=(-1x)^0/(1-(-1x))-(-1x)^0/(1-(-1x))*(-1x)^n
第二个空就是Sn了
第一个空简单 就是返回 x 就行了

这么做:

float px(float x,int n)
{
if(n==1)___return x______;
else return (x*(____(-1)*px(x,n-1)_____));
}