斐波那契数列

/*斐波那契数列*/

/*
* 解法1:递归解法
*/

long long Fibonacci(unsigned int n)
{
	if (n <= 0)
		return 0;

	if (n == 1)
		return 1;

	return Fibonacci(n - 1) + Fibonacci(n - 1);
}

/*
* 解法2:利用数组保存中间结果的解法
*/

long long Fibonacii(unsigned int n)
{
	int result[2] = { 0,1 };
	if (n < 2)
		return result[n];

	long long fibNMinusOne = 1;
	long long fibNMinusTwo = 0;
	long long fibN = 0;
	for (int i = 2; i <= n; ++i)
	{
		fibN = fibNMinusOne + fibNMinusTwo;
		fibNMinusTwo = fibNMinusOne;
		fibNMinusOne = fibN;
	}

	return fibN;
}

/*
* 斐波那契数列的变形问题:
* 青蛙跳台阶的问题:一次青蛙一次可以跳上1级台阶,也可以跳上两级台阶。请问该青蛙跳上一个n级台阶
* 总共有多少中跳法。
* f(n) = f(n-1) + f(n-2)
*/

  内容摘抄自《剑指offer》第二版

posted on 2021-11-14 18:14  xcxfury001  阅读(29)  评论(0)    收藏  举报

导航