我最初解決了Project Euler問題#2,它計算的斐波那契數列的偶數達到4,000,000。我完成了這一步,然後我想增加最大數目,以便它可以無限地繼續下去,從而產生更慢的計算結果,因爲計算時間更長。爲Fibonacci序列避免堆棧溢出錯誤
我得到了堆棧溢出錯誤,並想知道是否有代碼的替代解決方案,以便它能夠繼續運行,儘管緩慢,沒有遇到堆棧溢出錯誤。
有人可以幫助重構我的解決方案嗎?謝謝。
下面提供了此問題的相關代碼。
public static void main(String[] args) {
fibonacci(1,2,2);
}
private static void fibonacci(long first, long second, long sum) {
long number = first + second;
if (number % 2 == 0){ //Checks for even number
sum = sum + number;
}
System.out.println(sum);
fibonacci(second, number, sum);
// Produces the following error:
// Exception in thread "main" java.lang.StackOverflowError
}
http://stackoverflow.com/questions/849813/large-numbers-in-java –
不要使用遞歸,使用循環。 –
打破遞歸調用的基礎條件在哪裏? – Gangaraju