本文主要是介绍LintCode 查找斐波纳契数列中第 N 个数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
所谓的斐波纳契数列是指:
- 前2个数是 0 和 1 。
- 第 i 个数是第 i-1 个数和第i-2 个数的和。
斐波纳契数列的前10个数字是:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34 ...
给定 1
,返回 0
给定 2
,返回 1
给定 10
,返回 34
题目就是斐波那契数算法的变形。关于斐波那契数,首先想到递归
class Solution{
public:/*** @param n: an integer* @return an integer f(n)*/int fibonacci(int n) {// write your code hereif ( n == 1 ) {return 0;} else if ( n == 2 || n == 3 ) {return 1;} /*else {return fibonacci(n-1) + fibonacci(n-2);}
};
但是递归太耗费时间,结果超时。
再换成非递归形式
<pre name="code" class="cpp">class Solution{
public:/*** @param n: an integer* @return an integer f(n)*/int fibonacci(int n) {// write your code hereif ( n == 1 ) {return 0;} else if ( n == 2 || n == 3 ) {return 1;} int s1 = 1;int s2 = 1;int i = 4;int sum = 0;while (i <= n) {sum = s1 + s2;s1 = s2;s2 = sum;i++;}return sum;}
};
这篇关于LintCode 查找斐波纳契数列中第 N 个数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!