21xrx.com
2024-09-20 00:57:11 Friday
登录
文章检索 我的文章 写文章
C++编写求x的n次方函数
2023-07-09 06:35:16 深夜i     --     --
C++ 求幂函数 x的n次方

要实现一个求x的n次方的函数,我们可以使用C++语言来编写。

我们可以使用递归或迭代的方式来实现这个函数。以下是递归方法的示例代码:


double power(double x, int n) {

  if (n == 0)

    return 1.0;

  

  double half = power(x, n / 2);

  if (n % 2 == 0) {

    return half * half;

  } else {

    return half * half * x;

  }

}

上面的代码使用了分治法的思想,对n进行二分,然后递归地求出x的n/2次方,最后根据n的奇偶性,将其平方或者乘x再平方即可。

另外,我们也可以使用迭代的方式来实现这个函数。以下是迭代方法的示例代码:


double power(double x, int n) {

  double ans = 1.0;

  long long nn = n;

  if (nn < 0)

    x = 1 / x;

    nn = -nn;

  

  while (nn) {

    if (nn & 1) {

      ans *= x;

    }

    x *= x;

    nn >>= 1;

  }

  return ans;

}

上面的代码中,我们用了一个 long long 类型的变量 nn 来保存 n 的值(因为当 n 为 int 最小值时,取相反数会导致溢出)。然后我们判断 nn 是否为负数,如果是,就将 x 取倒数,并把 nn 取相反数。接下来进入 while 循环,当 nn 不为零时,我们判断 nn 的二进制最后一位是否为 1,如果是,就将 ans 乘上 x 的值。然后我们将 x 的值自乘一次,也就是将 x 的值平方。最后我们将 nn 右移一位(相当于将 nn 除以 2),直到 nn 变为 0。

综上,我们使用递归或迭代的方法都可以实现求一个数的 n 次方函数。在实际使用中,我们需要根据实际情况选择合适的方法。递归方法可以避免使用大量的乘法运算,但会使用更多的函数调用,可能会导致栈溢出。迭代方法可以减少函数调用,但需要使用更多的乘法运算。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复