读书人

递归变换为跌打

发布时间: 2012-10-27 10:42:26 作者: rapoo

递归转换为跌打

C/C++ code
#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;


[解决办法]
C/C++ code
#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;}
[解决办法]
好吧,如果说不让用变量的话,
那我就木有办法了。

C/C++ code
#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)看上去相等了。
[解决办法]
有的递归不能化为迭代的。

读书人网 >软件架构设计

热点推荐