[英]why does recursive numeric method print out its output
谁能以最简单的方式告诉我为什么调用 generate(123)时会打印出321123吗? 我了解为什么它会打印出321,但是我却看不到123部分。
/** @param x an integer such that x >= 0
*/
public void generate(int x) {
System.out.print(x % 10);
if ((x / 10) != 0) {
generate(x / 10);
}
System.out.print(x % 10);
}
递归“输入”,然后返回“输出”。 这样想:
generate(123) {
System.out.print(123 % 10) // 3
generate(12) {
System.out.print(12 % 10) // 2
generate(1) {
System.out.print(1 % 10) // 1
System.out.print(1 % 10) // 1
}
System.out.print(12 % 10) // 2
}
System.out.print(123 % 10) // 3
}
因为您在递归调用之前和之后都打印x%10
。 当数字是123时,它将打印3,对12进行打印,然后再次打印3。
当它变为12时,将打印2,对1做功,然后再次打印2。
与1相同。因此,您将在每个呼叫中“嵌套”打印其余部分。
进入更深层次的功能:
如果((x / 10)!= 0){
生成(x / 10);
}
也以反序退出321至123
因为还有另一个
System.out.print(x%10);
之后。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.