最近没事看算法,平时也有看视频补充,毕竟不怎么聪明,仅仅看书真容易睡过去,我能怎么办?我也很无奈啊○▽○。还是写写博客当笔记吧,毕竟好记性不如烂笔头不是?
记得当初学c的时候老师,一说汉诺塔,全程黑人问号状态,明明那么复杂的步骤怎么就几句代码就好了呢?
好了,话不多说,上代码吧。
1、斐波那契数列
F(1)=1;
F(2)=1;
F(n)=F(n-1)+F(n-2); (n>2)
迭代的实现
#include <stdio.h>
int main()
{
int i;
int F[40];
F[0]=1;
F[1]=1;
for(i=2;i<40;i++){
F[i]=F[i-1]+F[i-2];
printf("%d ",F[i]);
}
return 0;
}
递归事实上就是函数自己调用自己,但是递归的效率相当低下,一般情况下建议迭代。
#include <stdio.h>
int Fib(int i){
if(i<2)
return i<0?0:1;
else
return Fib(i-1)+Fib(i-2);
}
int main()
{
int i;
for(i=0;i<5;i++){
printf("%d ",Fib(i));
}
return 0;
}