码迷,mamicode.com
首页 > 其他好文 > 详细

Fibonacci

时间:2016-04-08 21:22:56      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:

---恢复内容开始---

在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*)

据此

#include<stdio.h> 

long fib(int n){
    return n<2? 1:fib(n-1)+fib(n-2);
}
int main(){
    int n;
    scanf("%d",&n);
    printf("%ld\n",fib(n));
    return 0;
}//但,会出现重复计算,例如fib(5)=fib(4)+fib(3),fib(4)=fib(3)+fib(2)...据此判断递归过程像满二叉树,也就是说很有很多重复计算,速度很慢。

迭代:

#include<stdio.h> 

long fib(int n){
    long f0=0,f1=1,f2,i;
    if(n<=1) return 1;
    for(f2=f0+f1,i=2;i<n;i++){
        f0=f1,f1=f2;
        f2=f1+f0;
    }
    return f2;
}
int main(){
    int n;
    scanf("%d",&n);
    printf("%ld\n",fib(n));
    return 0;
}

另一种递归:

#include<stdio.h> 

long fib(long f1,long f0,int n){
    return n<=0? f0:fib(f0+f1,f1,n-1);
}
int main(){
    int n;
    scanf("%d",&n);
    printf("%ld\n",fib(1,1,n));
    return 0;
}

 

---恢复内容结束---

Fibonacci

标签:

原文地址:http://www.cnblogs.com/wqkant/p/5369778.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!