即使世界的運動從一個Java書我讀已我困惑:斐波那契(n)的這種實現是如何工作的? [遞歸]
斐波納契數列是數字1,1,2,3,5,8,13 的序列, 21,34等,其中每個數字(從第三個開始)是前兩個的總和 。創建一個將整數作爲參數的方法,並顯示從 開始開始的許多斐波那契數字。如果,例如,你運行java斐波納契5(其中斐波那契是 類的名稱),輸出將是:1,1,2,3,5
我可以發誓,這將需要一個陣列或存儲先前數的一些方式,但是當我看到答案是不是這樣的:
import java.util.*;
public class Fibonacci {
static int fib(int n) {
if (n <= 2)
return 1;
return fib(n-1) + fib(n-2);
}
public static void main(String[] args) {
// Get the max value from the command line:
int n = Integer.parseInt(args[0]);
if(n < 0) {
System.out.println("Cannot use negative numbers"); return;
}
for(int i = 1; i <= n; i++)
System.out.print(fib(i) + ", ");
}
}
會有人能夠解釋如何使用函數中自身產生的?
指算法使用中本身就是一個函數被調用'recursion' – Marcus
瞭解遞歸的最好方法是瞭解遞歸。 –
學習遞歸的最好方法就是做到這一點,而不是考慮花哨的名字。試想一下,你是編譯器/虛擬機,並且正在運行該程序。感受堆棧的存在。達到禪宗。 – sehe