剑指offer-斐波那契数列

来源:互联网 发布:mac os dmg镜像下载 编辑:程序博客网 时间:2024/05/15 07:24

斐波那契数列




                                      


#include <stdio.h>long long Fibonacci(unsigned int n){if(n<=0){return 0;}if(n==1){return 1;}return Fibonacci(n-1)+Fibonacci(n-2);}int main(){long long total=0;int N;scanf("%d",&N);total=Fibonacci(N);printf("%lld",total);return 0;}


                                        

                                       


#include <stdio.h>long long Fibonacci(unsigned int n){int result[3]={0,1,1};if(n<=2){return result[n];}long long fibNMinusOne=1;long long fibNMinusTwo=1;long long fibN=0;for(unsigned int i=2;i<n;++i){fibN=fibNMinusOne+fibNMinusTwo;fibNMinusTwo=fibNMinusOne;fibNMinusOne=fibN;}return fibN;}int main(){long long total=0;int N;scanf("%d",&N);total=Fibonacci(N);printf("%lld",total);return 0;}

1-300项斐波那契数列:点击打开链接


相关:


                                  

                                 


                              

分析:

                        用Fib(n)表示青蛙跳上n阶台阶的跳法数,青蛙一次性跳上n阶台阶的跳法数为1(n阶跳),设Fib(0)=1;

                        当n=1时,只有一种跳法,即1阶跳:Fib(1)=1;

                       当n=2时,有两种跳的方式:Fib(2)=Fib(1)+Fib(0)=2;

                       当n=3时,有三种跳的方式:Fib(3)=Fib(2)+Fib(1)+Fib(0)=4;

                       当n=n时,有n种跳的方式,即Fib(n)=Fib(n-1)+Fib(n-2)+...+Fib(1)+Fib(0);

         因为Fib(n)=Fib(n)=Fib(n-1)+Fib(n-2)+...+Fib(1)+Fib(0);

                       Fib(n-1)=Fib(n-2)+...+Fib(1)+Fib(0);

         所以两式相减得:Fib(n)-Fib(n-1)=Fib(n-1)     ======》     Fib(n)=2*Fib(n-1)

         因此:Fib(n)=2^(n-1)


                                

                              

0 0
原创粉丝点击