gpt4 book ai didi

Java递归和局部变量

转载 作者:行者123 更新时间:2023-12-01 18:22:25 25 4
gpt4 key购买 nike

因此,在下面的方法中,有两个整数:basen

powerN(base, n-1) * base发生时,到底会发生什么?

只有 base 被相乘,但是方法内部有两个局部变量,那么为什么 n-1base 不都被相乘> 乘以基数,因为它们都是该方法的一部分?

(抱歉,如果这是一个新问题,但我似乎无法理解这个概念。)

public int powerN(int base, int n)
{
if (n == 0) {
return 1;
} else {
return (powerN(base, n-1) * base);
}
}

最佳答案

以下是示例值的运算顺序:

base = 3, n = 4
Is 4 == 0? No
powerN(3, 3) * 3
base = 3, n = 3
Is 3 == 0? No
powerN(3, 2) * 3 * 3
base = 3, n = 2
Is 2 == 0? No
powerN(3, 1) * 3 * 3 * 3
base = 3, n = 1
Is 1 == 0? No
powerN(3, 0) * 3 * 3 * 3 * 3
base = 3, n = 0
Is 0 >= 0? Yes, return 1. // Base Case
1 * 3 * 3 * 3 * 3
81

powerN(base, n - 1) 确实会乘以 base,但直到递归调用返回为止。基本情况(最深嵌套的调用)首先返回 1。然后进行乘法,每次递归调用一次,递归调用依次返回 3927,原始调用返回81

关于Java递归和局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27322043/

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