递归转换为跌打
- 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)看上去相等了。
[解决办法]
有的递归不能化为迭代的。