我对Java很新。我正在学习递归,正在阅读这段代码,看看我是否可以追踪它。
在基本情况下,当我将k
值从0更改为1时,迭代次数改变了9倍。
我试图用一些sysout跟踪它,但仍然不理解它。我确实理解这是for循环中的递归。我理解没有for循环的递归输出,但是一旦它重新加入,我无法追踪为什么它在基本情况等于0时会自己回忆。
鉴于k = 2
的初始调用,当基本条件从1变为0时,为什么它会从9跳到81?
我花了好几个小时试图理解它。
代码如下:
public class recurforloop {
public static void printrecurforloop(int number, int k) {
//when I change the value of k == 1, the iterations reduces from 81 to 9
if (k == 0) {
System.out.println(number);
}
for (int i = ( 1); i < 10; i++) {
printrecurforloop(number * 10 + i, k - 1);
}
}
public static void main(String[] args) {
printrecurforloop(0, 2);
}
}
答案 0 :(得分:0)
它改变了9倍,因为每次调用printrecurforloop方法时,它都会在for循环中被调用9次,直到k = 0。