Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 递归-解释代码如何工作(绘图)_Java_Recursion - Fatal编程技术网

Java 递归-解释代码如何工作(绘图)

Java 递归-解释代码如何工作(绘图),java,recursion,Java,Recursion,我写这段代码,并试图理解所有执行的活动(递归)。 有人能帮我画一棵树来纪念发生的事吗 public static String row(int n) { if (n == 1) return "1"; else return row(n - 1) + " " + n; } public static String triangle(int a, int b) { if (a == b) return row(b);

我写这段代码,并试图理解所有执行的活动(递归)。 有人能帮我画一棵树来纪念发生的事吗

public static String row(int n) {
    if (n == 1)
        return "1";

    else
        return row(n - 1) + " " + n;
}

public static String triangle(int a, int b) {
    if (a == b)
        return row(b);

    else
        return row(a) + "\n" + triangle(a + 1, b);

}
}

感谢您的

方法:

public static String row(int n) {
    if (n == 1) {
        return "1";
    } else {
        return row(n - 1) + " " + n;
    }
}
返回一个字符串,该字符串包含由空格分隔的从1到n的所有数字。例如,
行(4)
将返回字符串
“1 2 3 4”

您的
三角形
方法为三角形的每一行打印一行

public static String triangle(int a, int b) {
    if (a == b) {
        return row(b);
    } else {
        return row(a) + "\n" + triangle(a + 1, b);
    }

}
为从
a
b
的每一行步骤创建一行三角形

e、 g.
三角形(4,6)
将打印:

1 2 3 4
1 2 3 4 5
1 2 3 4 5 6
代码的工作原理
row
方法,如果给定值
1
将返回“1”。任何其他值都将产生一个字符串,该字符串相当于
行(n-1)
,后跟
n
,因此本质上它将返回
1 2 3。。。n

triangle
方法返回一个字符串,该字符串试图用数字绘制三角形。因此
三角形(4,6)
返回
第(4)行+三角形(5,6)
它返回
第(5)行+三角形(6,6)
它将返回
第(6)行
。因此,最终结果将是:

1 2 3 4
1 2 3 4 5
1 2 3 4 5 6

你写了你不懂的代码?现在,这段代码创建了一个字符串。尝试运行代码并打印该操作的结果?递归是一个使用不同输入参数调用自身的函数。还必须有一个终止条件,以便函数不会无限循环。基于此,你应该能够计算出剩下的部分。