java - 这个递归函数有什么作用?

标签 java recursion

这个函数有什么作用?您如何评价它?

如何追溯?如何理解递归方法?

我就是看不懂递归,而且马上就要考试了,我知道要想看懂递归,必须先看懂递归。

但是我不会写一个稍微复杂的递归方法,谁能帮我用最简单的英文单词。

public class BalancedStrings {

    public static void printBalanced(String prefix, int a, int b) {
        if (a > 0)
            printBalanced(prefix + "a", a - 1, b);
        if (b > 0)
            printBalanced(prefix + "b", a, b - 1);
        if (a == 0 && b == 0)
            System.out.println(prefix);
    }

    public static void printBalanced(int n) {
        if (n % 2 == 0) {
            printBalanced("", n / 2, n / 2);
        }
    }

    public static void main(String[] args) {
        printBalanced(4);
    }
}

最佳答案

printBalanced() 的调用是递归调用。识别递归的方法是在函数调用自身时。使用树绘制时最好理解递归:

enter image description here

树的分支将继续创建更多函数,直到满足结束条件,在本例中为a == 0 && b == 0。您提供的函数看起来像是在递归地打印与指定数量的“a”和“b”字符连接的字符串“prefix”。当变量 ab 达到 0 时,递归停止并使用 System.out.println(prefix) 打印结果;

在主函数中,您将整数 4 传递给 printBalanced(int n),它调用 printBalanced(String prefix, int a, int b),参数如下这:printBalanced("",2,2);

整体结果是前缀连接了 a 和 b 的平衡数

关于java - 这个递归函数有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11264367/

相关文章:

java - 具有独特解决方案的递归问题

java - 当我们有 itreator 时为什么要引入 for 循环 With Using Same Map Entry Function

tsql - T-SQL 如何从 T-SQL 中的树中获取所有项目?

java - 无法使用 Selenium java API 创建 Firefox 驱动程序

java - ResultSet 可以用于直接填充表吗?

php - 递归获取类别树(Yii)

c - 搜索 `count'个小于 `bound'的不同奇数加起来为 `sum'

c++ - 递归目录和文件流以及搜索字符串

java - 将字符串与数组值进行比较

java复杂语句执行顺序