读书人

递归转换为跌打解决思路

发布时间: 2013-01-25 15:55:29 作者: rapoo

递归转换为跌打


#include <stdio.h>

int f(int n)
{
if(n<3)
return 1;
else
return f(n-2)+n;
}

int main(int argc, char *argv[])
{
int i=0;
for(i=1;i<=10;i++)
printf("%d ",f(i));

return 0;



[解决办法]

#include <stdio.h>

int main(int argc, char *argv[])
{
int i=0;
int f[11]={1,1,1};

for(i=3;i<=10;i++)
f[i]=f[i-2]+i;

for(i=1;i<=10;i++)
printf("%d ",f[i]);

return 0;
}

[解决办法]
好吧,如果说不让用变量的话,
那我就木有办法了。


#include <stdio.h>

int main(int argc, char *argv[])
{
printf("%d ",1);
printf("%d ",1);
int a=1,b=1,c;
for(int i=3;i<=10;i++){
c = i+a;
printf("%d ",c);
a = b;
b = c;
}

return 0;
}

[解决办法]
f(n) = f(n-2) + n,
费内巴契数,
F(n - 1) = F(n - 2) + n -1,再加1就跟f(n)看上去相等了。
[解决办法]
有的递归不能化为迭代的。

读书人网 >软件架构设计

热点推荐