我需要編寫一個遞歸方法。我已經編寫了代碼來執行沒有遞歸的任務。我在練習13r.recursion(Exercise13r.java:29)處得到線程「main」java.lang.StackOverflowError中的異常。如果結果是偶數,則......如果結果爲奇數,則乘以3並減去1.顯然,我正在循環,但不知道爲什麼。任何援助將不勝感激。遞歸 - 線程「main」中的異常java.lang.StackOverflowError
if (number != 1)
需要 import java.util.Scanner;
public class Exercise13r
{
public static void main(String[] args)
{
// Initialize variables
long number = 0;
Scanner in = new Scanner(System.in);
System.out.println ("Enter a starting number: ");
number = in.nextInt();
System.out.println ("Your starting number is: " + number);
if (number != 1)
{
recursion(number);
}
}
public static void recursion(long n)
{
if (n % 2 == 0)
{
recursion(n/2);
}
else
{
recursion(n*3-1);
}
System.out.println ("number: " + n);
return;
}
}
計劃停車時數的結果= 1 – shoes
你需要移動「我現在應該停止」內部'遞歸查詢'。就目前而言,'if'的兩個分支再次調用該函數,並且它永遠循環。 –
在哪種情況下,你認爲你可以退出'遞歸'方法? – njzk2