递归计算x ^ -n

时间:2015-09-22 17:54:31

标签: algorithm recursion

我对编程很新,并试图想出一种递归计算x ^ -n的方法。 (数学背后的解释以及递归计算x ^ n之间的区别将不胜感激):

double power(double x, int n)
{
    if (n == 0) 
        return 1.0;

    return x * power(x, n - 1)
} 

5 个答案:

答案 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>