gpt4 book ai didi

Java 递归执行流程

转载 作者:行者123 更新时间:2023-11-29 03:24:28 26 4
gpt4 key购买 nike

public static void main(String[] args) {
System.out.println(prod(1, 4));
}

public static int prod(int m, int n) {
if (m == n) {
return n;
} else {
System.out.println(n);
int recurse = prod(m, n - 1);
System.out.println(recurse);
int result = n * recurse;
return result;
}
}

努力理解这里的执行流程。

在 if 子句中,当 m =n 时,在 1=1 的情况下,它返回 n =1,但从这里直接声明 int recurse,然后相同的 n 变为 2。我不明白发生了什么.

最佳答案

您的程序将递归调用 prod() 函数并将局部变量存储在堆栈中,直到 m!=n。一旦 m 等于 n,它将开始执行存储在堆栈中的程序的剩余部分。

为了更好地理解,我在您的程序中添加了 System.out.println() 语句。

public static void main(String[] args) {
System.out.println("Final Output in Main "+prod(1, 4));
}

public static int prod(int m, int n) {
if (m == n) {
System.out.println("Return Result: "+n);
return n;
} else {
System.out.println("Print : "+n);
int recurse = prod(m, n - 1);
System.out.println("Print Recurse: "+recurse);
int result = n * recurse;
System.out.println("Return Result: "+result);
return result;
}
}

程序流程是这样的

Print : 4
Print : 3
Print : 2
Return Result: 1
Print Recurse: 1
Return Result: 2
Print Recurse: 2
Return Result: 6
Print Recurse: 6
Return Result: 24
Final Output in Main 24

关于Java 递归执行流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21786920/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com