算法题4 斐波那契数列

题目

Fibonacci数列定义如下:

输入n,求f(n)

分析

在剑指offer上有个O(logn)的算法,本文只做O(n)算法的分析。这其实是一个简单的动态规划问题,问题的结果跟子问题的结果相关,关系式已经给出了,计算中需要保存子问题的结果

跳台阶问题:一个台阶一共有n阶,一次起跳可以跳一阶,也可以跳二阶。问总共有多少中跳法,并对时间复杂度进行分析。该问题也是典型的Fibonacci数列问题,第一次跳1个台阶,接下来有f(n-1)中跳法,第一次跳2个台阶,则接下来有f(n-2)个跳法。

代码

long Fibonacci(unsigned int n)
{
	unsigned int fn=n,fn1=1,fn2=0;
	unsigned int x=2;
	while (x<=n)
	{
		fn=fn1+fn2;
		fn1=fn;
		fn2=fn1;
		x++;
	}
	return fn;
}
原文地址:https://www.cnblogs.com/wangzaizhen/p/5167166.html