首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

好像是个递归的有关问题 但是不用递归如何解决

2012-03-07 
好像是个递归的问题 但是不用递归怎么解决有一个数组inta[n]{21,32,45,67,89,81.64,34.......}有一个函数

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

热点排行