java - 为什么这个递归方法超出了我的预期

标签 java recursion

做一个非常简单的程序来测试递归。程序打印一些东西,直到数字不大于 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/

相关文章:

Ruby:递归和执行顺序

Java 如何防止用户在 FileChooser OpenFileDialog 中编辑文件名

java - 添加样式后如何重置回默认 css?

java - JPA 一对一关系

java - 使用选择排序算法对字符串进行排序

python - Python 3 中的递归

java - 使用react.js对象发送空值的POST请求

c++ - 生成数组的所有排列而不重复结果

javascript - jquery如何传递上次迭代的变量?

javascript - Javascript中如何使用递归函数遍历树