递归:
#include<stdio.h>
long long f(unsigned int n){
int t[2]={0,1};
return n<2?t[n]:f(n-1)+f(n-2);
}
void main(){
printf("%I64d",f(100));
}
循环:
#include<stdio.h>
long long f(unsigned int n){
int t[2]={0,1};
if(n<2)
return t[n];
long long s1=0;
long long s2=1;
long long num=0;
unsigned int i=2;
for(i=2;i<=n;i++){
num=s1+s2;
s1=s2;
s2=num;
}
return num;
}
void main(){
printf("%I64d",f(100));
}
由于递归存在重复计算的问题所以它的的时间复杂度远大于循环方法的实现
青蛙跳台阶的问题实际上就是用到了斐波那契数列的思想
![题目描述](http://img.blog.csdn.net/20150929091936632)
![图解分析](http://img.blog.csdn.net/20150929091841798)
斐波那契数列(递归与循环的区别)
最新推荐文章于 2022-02-18 14:38:54 发布