public static void solveTowers(int disks, int sourcePeg, int destinationPeg, int tempPeg)
{
//always set the base case in any type of recursion programs
if(disks == 1)
{
System.out.printf("\n%d --> %d", sourcePeg, destinationPeg);
return;
}
//call the method itself
solveTowers(disks - 1, sourcePeg, tempPeg, destinationPeg);
System.out.printf("\n%d --> %d", sourcePeg, destinationPeg);
solveTowers(disks - 1, tempPeg, destinationPeg, sourcePeg);
}
我的问题是第一个 System.out 语句下的“return”是什么?
调试时,第一个 solveTowers
方法到达基本情况(即磁盘 == 1)后,
它进入 if 语句,然后到达 return;
后,进入第二个 System.out
语句,然后是第二个solveTowers
> 方法,所以问题是为什么 return;
跳过了第一个solveTowers
但没有跳过第二个?
最佳答案
return
语句一旦到达就会结束函数或方法的执行。
由于该方法的返回类型是void
,因此不需要返回值来结束函数,可以像这样简单地调用:return;
如果返回类型不同(例如整数),则必须返回如下整数:return 1;
关于java - 汉诺塔在java中回归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14456884/