做一个非常简单的程序来测试递归。程序打印一些东西,直到数字不大于 0。
public class TestIt {
public static void print(int f){
while(f>0){
System.out.println("Not today");
f--;
print(f);
}
}
}
上面的代码是这样从主程序调用的。
public static void main(String[] args) {
TestIt.print(2);
}
也许我终于失去了理智,但程序打印的次数超出了我的预期。如果我向该方法发送 3,则程序打印 7 次。关于原因有什么想法吗?
最佳答案
因为你做错了
while(f>0){
System.out.println("Not today");
f--;
print(f);
}
你在循环中调用方法print
f
因为它是递归的,所以它会被递归地调用 f-1 次
所以这将是最后的时刻
删除 while
循环,将按照您的意愿工作
关于java - 为什么这个递归方法超出了我的预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53734632/