好像是个递归的问题 但是不用递归怎么解决
有一个数组 int a[n]={21,32,45,67,89,81.64,34.......}
有一个函数 y= f(x)
要求计算 y= f ( f( f(a[1])+a[2])+ a[3]).........
怎么样用程序写个函数来计算当n为任何数时这个公式的值 请给个算法思路??
[解决办法]
简单循环也可以吧,把上次算到的值作为临时变量。
lastvalue=0
for(i=1;i <n+1;i++)
lastvalue = f(lastvalue+a[i]);
[解决办法]
用递归也是很好的,并没有什么重复调用。
递归版本:
#include <iostream.h>
int list[8]={1,2,3,4,5,6,7,8};
int f( int x ) //最简单的f(x)
{
return x;
}
int g( int pos)
{
int r=0;
if( pos <0 )
return 0;
return f( g( pos-1 )+ list[pos] ); //递归式
}
int main()
{
int len=sizeof(list)/sizeof(list[0]);
cout < <g( len-1 ) < <endl;
return 0;
}