剑指Offer之 - 斐波那契数列

来源:互联网 发布:什么是淘宝店铺运营 编辑:程序博客网 时间:2024/05/16 10:02

题目:


应用:

青蛙跳台阶,爬楼梯,小矩形覆盖大矩形……

思路:

1、  递归

2、  迭代

代码:

#include <iostream>using namespace std;//斐波那契数列//应用:青蛙跳台阶,爬楼梯,小矩形覆盖大矩形long long fibonacciRecurisely(int n){if(n == 0 || n == 1)return n;return fibonacciRecurisely(n-1) + fibonacciRecurisely(n-2);}//何海涛做法long long Fibonacci(unsigned n){int result[2] = {0,1};if(n < 2)return result[n];long long fibNMinusOne = 0;long long fibNMinusTwo = 1;long long fibN = 0;for(unsigned int i = 2 ; i <= n ; i++){fibN = fibNMinusOne + fibNMinusTwo;fibNMinusOne = fibNMinusTwo;fibNMinusTwo = fibN;}return fibN;}long long fibonacciInteratively(int n){long long pre = 0;long long result = 1;if(n <= 1)return n;long long tmp = result;for(int i = 2 ; i <= n ; i++){tmp = result;result += pre;pre = tmp;}return result;}//矩阵方法,不会int main(){int x ;while(cin>>x){cout<<fibonacciRecurisely(x)<<endl;//当数据很大时,递归速度明显变慢很多cout<<fibonacciInteratively(x)<<endl;cout<<Fibonacci(x)<<endl;}}


0 0