首页 > 解决方案 > java中的递归函数?

问题描述


public class Main {

    public static void main(String[] args) {
        printDollars(7);
    }

    public static void printDollars(int n) {
        if (n > 1) {
            printDollars(n - 1);
        }
        
        for (int i = 0; i < n; i++) {
            System.out.print("$");
        }
    }
}

printDollars() 函数执行后 n 的值如何增加。

标签: recursiontail-recursion

解决方案


n 的值实际上每次迭代都会减一。

当7第一次进入函数时,逻辑检查值是否大于1。由于7>1,所以值(7-1)=6进入递归函数的下一层。它发生了好几次(6 到 5、5 到 4 等),直到函数达到一个。

需要注意的一件重要事情是,如果您只是从递归开始,则当代码到达 n = 1 的点时开始打印美元符号,因为要到达代码的那部分,机器必须克服所有的递归调用。所以第一个打印的'$'实际上是来自n = 1的调用,然后是n = 2,等等。

我建议您尝试打印出 n 而不是 '$',以便您更清楚地了解它的工作方式。


推荐阅读