我对编程很新,并试图想出一种递归计算x ^ -n的方法。 (数学背后的解释以及递归计算x ^ n之间的区别将不胜感激):
double power(double x, int n)
{
if (n == 0)
return 1.0;
return x * power(x, n - 1)
}
答案 0 :(得分:2)
x -n 在数学上等于1 / x n ,因此您可以调整x n 的经典递归计算来处理它太:
double power (double x, int n) {
if (n < 0) {
return 1.0 / power(x, -1 * n);
}
if (n == 0) {
return 1.0;
}
return x * power (x, n - 1);
}
答案 1 :(得分:1)
x^-n
相当于1/(x^n)
。只需在调用方法
double result = 1.0/power(x,n);
之类的语句即可
答案 2 :(得分:0)
这个过程非常简单。我在VB.NET中写过这个,因为它像英语一样,有点容易理解。
Function I(ByVal x As Double, ByVal n As Integer) As Double
If n = 0 Then
Return 1
End If
Return 1 / x * I(x, n - 1)
End Function
每当在递归中编写函数时,必须识别基本情况。例如,问题可以分解为什么?
这里基本情况是n = 0,只是1。
然后是从这些基本步骤构建问题的经常性步骤。
答案 3 :(得分:0)
这基本上一直未知,直到它达到n == 0的情况。一旦到达那里,它返回1,这意味着它可以找出n == 1个案应该返回的内容。您可以将其视为等待返回x * power(x,n - 1),直到x * power(x,n - 1)行中的一行返回某些内容,这在n == 0时发生。从那里它可以弄清楚x == 1的情况是什么,依此类推,直到它最终确定最终答案并返回主代码。
这里有来自3的图形:
x = 3是什么情况? 需要获得x = 2
ok, what's the case for x=2?
-need to get x=1 for that
ok, what's the case for x=1?
-need to get x=0 for that
ok, what's the case for x=0?
-the answer is one1
ok, then my answer is a bunch of stuff using case x=0's answer (1)
ok, then my answer is a bunch of stuff using case x=1's answer which uses x=0's answer (1)
ok, then my answer is a bunch of stuff using case=2's answer which uses x=1's answer, which uses x=1's answer (1)
答案 4 :(得分:-1)
正如大家所说,x ^ -n等于1 / x ^ n。因此,这可能是一个答案:
<label class="btn btn-primary active">
<input type="radio" value="$99/mo" name="rd1" checked> Monthly
</label>
<label class="btn btn-primary">
<input type="radio" value="$299/mo" name="rd1"> Annual
</label>