我是Java的新手,下面的代码计算a ^ b,我已经在计算机上对其进行了编译,并且工作正常。但是我不明白它是如何工作的?java编译器如何计算a * power(a, b - 1)有人可以向我解释此代码吗?
int power(int a, int b) {
if (b < 0) {
return 0;
} else if (b == 0) {
return 1;
} else {
return a * power(a, b - 1);
}
}
Run Code Online (Sandbox Code Playgroud)
您的函数是递归的。用示例演示它的工作方式可能是最简单的。
假设您要计算2 ^ 4。因此,您致电power(2, 4);
这是评估方式(请注意,您弄错了基本情况):
power(2, 4) // b > 0, so it expands.
2 * power(2, 3)
2 * (2 * power(2, 2))
2 * (2 * (2 * power(2, 1)))
2 * (2 * (2 * (2 * power(2, 0)))) // Now, b == 0, so it evaluates to -1
2 * (2 * (2 * (2 * -1)))
2 * (2 * (2 * -2))
2 * (2 * -4)
2 * -8
-16
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
122 次 |
| 最近记录: |