查找斐波納契數列中第 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即為所得。
新聞熱點
疑難解答