用递归的方法对下列计算式编写一个函数。

[复制链接]
查看11 | 回复2 | 2010-7-5 11:30:34 | 显示全部楼层 |阅读模式
求函数:f(x,n)=x-x^2+x^3-x^4+……+[(-1)^(n-1)]*x^n (n>0)
#include "stdio.h"
#include "math.h"
int main()
{

int x,n;

int f(int x,int n);

scanf("%d%d",&x,&n);

printf("%d",f(x,n));
return 0;
}
int f(int x,int n)
{

int i,s=0,j;

for(i=1;i<=n;i++){

j=pow((-1),(n-1))*pow(x,i);

s=s+j;

}

return s;
}
给个答案,谢谢..

回复

使用道具 举报

千问 | 2010-7-5 11:30:34 | 显示全部楼层
如果不考虑时间和空间复杂度的化,可以采用最简单的归纳方式,先计算最后一项,前面所有项的和由归纳假设提供。即:f(x,n) = [(-1)^(n-1)]*x^n + f(x, n-1)int f(int x,int n){
if(n == 1)
return x;
//归纳基础
else
return pow((-1),(n-1))*pow(x,n) + f(x, n - 1);}可见递归比迭代代码简单易懂得多,但如果考虑算法复杂性的话,需要一种更优的归纳假设,具体就参考算法书中Horner规则了。
回复

使用道具 举报

千问 | 2010-7-5 11:30:34 | 显示全部楼层
int f(int x,int n){
if( n == 1 )
return x ;
else
return f(x,n-1) + pow((-1),(n-1))*pow(x,n);}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行