public static void main(String[] args) {
one();
System.out.println();
}
public static void one() {
Scanner sc = new Scanner(System.in);
System.out.println("Enter a number:");
int i = sc.nextInt();
for (int j=0; j<i; j++) {
System.out.println(fibonacci(j));
}
}
public static int fibonacci(int num){
if (num == 1) {
return 0;
}
else if (num == 2 || num == 3){
return 1;
}
else {
return fibonacci(num-1) + fibonacci(num-2);
}
}
當我運行,這將在線程「主要」 java.lang.StackOverflowError的得到異常,但如果我改變一個()來Java的斐波那契數堆棧溢出錯誤
public static void one() {
Scanner sc = new Scanner(System.in);
System.out.println("Enter a number:");
int i = sc.nextInt();
System.out.println(fibonacci(j));
}
我不會得到錯誤,即使我只輸入1,我可以問爲什麼?
您的循環以'j = 0'開頭,您的'fibonacci'方法的結果是什麼? – Flown
瞭解'breakpoints'。然後瀏覽你的代碼,看看發生了什麼。開發人員非常重要的技能 –