【发布时间】:2020-06-21 14:13:42
【问题描述】:
我遇到了一个解决指数问题的类,但我无法理解raiseToPower() 方法的工作原理。这是我不明白的行:resultVal = baseVal * raiseToPower(baseVal,exponentVal-1);
baseVal 乘以什么? raiseToPower(baseVal,exponentVal-1) 对我来说似乎不是一种表达方式。如果baseVal == 2,那么raiseToPower(baseVal,exponentVal-1)是什么?
我知道如何在脑海中解决 2^3,但我很难理解 baseVal * raiseToPower(baseVal,exponentVal-1) 解决问题所采取的步骤。我知道每次调用raiseToPower() 时exponentVal 减1,但我仍然不明白它是如何保存一个可以乘以baseVal 的值。
我了解这种递归方法的行为类似于循环。
public class ExponentMethod {
// calculates the result of raising a number to a power
public static int raiseToPower(int baseVal, int exponentVal) {
int resultVal; // holds the answer to the exponent problem
// sets resultVal to 1
if (exponentVal == 0) {
resultVal = 1;
}
else {
// calculate math problem
resultVal = baseVal * raiseToPower(baseVal,exponentVal-1);
}
// returns when exponentVal == 0
return resultVal;
}
public static void main (String [] args) {
int userBase;
int userExponent;
userBase = 2;
userExponent = 3;
System.out.println(userBase + "^" + userExponent + " = "
+ raiseToPower(userBase, userExponent));
}
}
// output
2^3 = 8
我知道有一个 pow() 方法可以将数字提高到幂次
谢谢,
【问题讨论】:
-
这意味着如果给你 2^3 ,它也可以写成 2*2^2 。希望这会有所帮助