我需要编写一个递归方法。我已经编写了代码来执行没有递归的任务。我在练习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