读书人

好像是个递归的有关问题 但是不用递归

发布时间: 2012-03-07 09:13:51 作者: rapoo

好像是个递归的问题 但是不用递归怎么解决
有一个数组 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;
}

读书人网 >软件架构设计

热点推荐