剑指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)
- 【剑指offer】斐波那契数列
- 剑指offer--斐波那契数列
- 剑指Offer-斐波那契数列
- 剑指offer:斐波那契数列
- 《剑指offer》斐波那契数列
- 剑指 offer:斐波那契数列
- 【剑指Offer】斐波那契数列
- 剑指offer 斐波那契数列
- 【剑指offer】斐波那契数列
- 剑指offer 斐波那契数列
- [剑指offer]斐波那契数列
- 剑指offer|斐波那契数列
- 【剑指offer】斐波那契数列
- 剑指offer--斐波那契数列
- 剑指Offer:斐波那契数列
- 《剑指Offer》斐波那契数列
- 剑指offer----斐波那契数列
- 剑指offer-斐波那契数列
- [编程题] 最长公共连续子串
- day6-html
- 对vslam、双目stereo的回顾
- java书籍推荐
- C++ Primer Chapter 15-2
- 剑指offer-斐波那契数列
- Spring事务传播性与隔离级别
- Android 6.0: 动态权限管理的解决方案
- C++ Primer Chapter 15-3
- 解决ubuntu14.04 启动时卡在 Waiting for network configuration...
- 消息队列使用的四种场景介绍
- C++ Primer Chapter 15-4
- 泛型
- 51Nod 1135-原根(快速求解一个素数的原根)