您的位置:首页 > 其它

斐波那契数列(递归与循环的区别)

2015-09-29 09:00 363 查看
递归:
#include<stdio.h>
long long f(unsigned int n){
int t[2]={0,1};
return n<2?t
: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
;
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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息