查找斐波纳契数列中第 N 个数。
所谓的斐波纳契数列是指:
前2个数是 0 和 1 。第 i 个数是第 i-1 个数和第i-2 个数的和。斐波纳契数列的前10个数字是:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34 ...
/// <summary> /// 递归算法 /// </summary> /// <param name="n"></param> /// <returns></returns> public int Fibonacci(int n) { if (n <= 0) { return 0; } if (n > 0 && n <= 2) { return 1; } return this.Fibonacci(n - 1) + this.Fibonacci(n - 2); }*递归算法容易理解,嵌套调用Function直至返回结果。(有条件的可以 单步调试即可理解!)非递归算法:
public static int GeneralFibonacci(int n) { int sum = 0; //穷举第一个和第二个数列元素 int item1 = 1; int item2 = 1; if (n <= 0) { return sum; } if (n > 0 && n <= 2) { sum = 1; return sum; } //循环变量应该从0开始长度为n-2 (总长n - 两个穷举数列2) for (int i = 0; i < n - 2; i++) { sum = item1 + item2; item1 = item2; item2 = sum; } return sum; }*非递归算法重要的地方再议循环这部分。1.首先穷举第1和第2两个元素。2.确定循环长度n-2 3. 等价替换sum 直至循环结束 sum即为所得。
新闻热点
疑难解答