剑指offer题型分类及各题的解题思路与代码(<---点我跳转 ^ - ^)
题目描述
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39
思路
使用迭代法,用 left 和 right 保存计算过程中的结果,并复用起来。迭代过程如下:
root left right
f(2) = f(0) + f(1)
f(3) = f(1) + f(2)
f(4) = f(2) + f(3)
f(5) = f(3) + f(4)
..................................
f(n) = f(n-2) + f(n-1)
C++实现代码
class Solution {
public:
int Fibonacci(int n) {
if(n <= 1)
return n;
//标记根节点的右结点的值
int right = 1;
//标记根节点的左节点的值
int left = 0;
//标记根节点的值
int root = 0;
//从第二项开始,向n迭代,x2 = x1 + x0,...xn = x(n-1) + x(n-2)
for(int i = 2; i <= n; ++i)
{
root = left + right;
left = right;
right = root;
}
return root;
}
};