斐波那契数列问题描述:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。 n<=39
关于斐波那契数列, 定义是这样的:
因为递归太浪费空间, 所以采用循环:
1 class Solution { 2 public: 3 int Fibonacci(int n) { 4 if(n < 2) 5 return n; 6 int first = 0; 7 int second = 1; 8 int sum = -1; 9 for(int i = 0; i < n - 1; i++) 10 { 11 sum = first + second; 12 first = second; 13 second = sum; 14 } 15 return sum; 16 } 17 };
这种方法采用了三个变量来参与循环,有强迫症的可以改成两个变量:
1 class Solution { 2 public: 3 int Fibonacci(int n) { 4 if(n < 2) 5 return n; 6 int first = 0; 7 int second = 1; 8 for(int i = 0; i < n - 1; i++) 9 { 10 second += first; 11 first = second - first; 12 } 13 return second; 14 } 15 };
这个跳台阶的问题就是斐波那契数列的应用了,问题描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
f(1) = 1; f(2) = 2; f(3) = 3; f(4) = 5; f(n) = f(n-1) + f(n-2);
1 class Solution { 2 public: 3 int jumpFloor(int number) { 4 if(number < 3) 5 return number; 6 int first = 1; 7 int second = 2; 8 for(int i = 3; i <= number; i++) 9 { 10 second = first + second; 11 first = second - first; 12 } 13 return second; 14 } 15 };