[英]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.