Java递归
以下是我对AP计算机科学问题的改编。 这本书说它应该印刷00123 我认为应该打印0012 但下面的代码实际上打印的是3132123 发生了什么事? 而且它似乎没有任何停止条件Java递归,java,Java,以下是我对AP计算机科学问题的改编。 这本书说它应该印刷00123 我认为应该打印0012 但下面的代码实际上打印的是3132123 发生了什么事? 而且它似乎没有任何停止条件 public class Mystery { public static void main(String[] args) { int n; n = 3; mystery(n); } public static void mystery(int
public class Mystery {
public static void main(String[] args) {
int n;
n = 3;
mystery(n);
}
public static void mystery(int n) {
int k;
for (k = 0; k < n; k++) {
mystery(k);
System.out.print(n);
}
}
}
实际问题是:
考虑下面的方法。
public void mystery (int n)
{
int k;
for (k=0 ; k < n ; k++)
{
mystery(k);
System.out.print(n);
}
}
调用神秘3返回什么值
我现在明白了循环构成了停止条件,我想我明白了贾蒙的注释最后一条指令是打印n。n是3,它不可能只打印“0010012”,但我不明白为什么书上说它应该打印00100123
正如Batsheba所说,我试着在调试时观察变量,但书上说应该打印00123。非常感谢贾蒙更正了代码,所以从我看来这本书是错的?该程序无法打印0。它打印n,如果n为0,它将永远不会到达System.out.printn行。该行位于for语句内,klast指令用于打印n。nis 3,它不可能只打印“0010012”,而且它似乎没有任何停止条件?!它有一个:提示:印刷品不在正确的位置,试着把它移出回路,把印刷品放在lop之外,你就会得到书上给出的结果。这是你的ideone@jhamon的叉子好发现!顺便说一句,你应该编辑评论。有一个地方应该有一个链接被断开。