- 论坛徽章:
- 0
|
我的非递归算法:- #include <stdio.h>
- int born(int );
- int a[3];
- void main()
- {
- int i,n,sum=1;
- printf("输入年份: ");
- scanf("%d",&n);
-
- for(i=1;i<=n;i++)
- {
- sum+=born(i);
- printf("第 %d 年 : %d\n",i,sum);
- }
- }
- int born(int m)
- {
- if(m<5)
- if(m<4) return 0;
- else return a[2]=1;
- else
- return a[(m+1)%3]+=a[m%3];
- }
复制代码 我的递归算法:- #include <stdio.h>
- int fun(int m);
- void main()
- {
- int i,n,sum=1;
- printf("输入年份: ");
- scanf("%d",&n);
- for(i=1;i<=n;i++)
- {
- sum+=fun(i);
- printf("第 %d 年: %d\n",i,sum);
- }
- }
- int fun(int m)
- {
- if(m<5)
- if(m<4) return 0;
- else return 1;
- else
- return fun(m-1)+fun(m-3);
- }
复制代码 后面这个算法比前面的慢
这两个算法在我的机子上调试编译通过,但因为采用的是int型变量,在50多年的时候就开始溢出了 |
|