21xrx.com
2024-12-22 22:31:04 Sunday
登录
文章检索 我的文章 写文章
C++中如何写x的n次方?
2023-06-23 10:30:13 深夜i     --     --
C++ x n 次方 写法

在C++中,我们可以使用循环或递归的方式来计算x的n次方。

循环方法:

  double power(double x, int n) {

    double res = 1.0;

    for (int i = n; i != 0; i /= 2) {

      if (i % 2 != 0) {  // 判断i是否为奇数,如果是,则将x乘到结果中

        res *= x;

      }

      x *= x;  // 每次将x平方

    }

    return n < 0 ? 1 / res : res;  // 如果n为负数,则取倒数

  }

该方法的思路是将n转化为二进制,然后对x进行平方运算。当n的某一位为1时,将x乘到结果中,最终得到x的n次方。

递归方法:

  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 if (n > 0) {

      return half * half * x;

    } else {

      return half * half / x;

    }

  }

该方法的思路是将x的n次方拆分成x的n/2次方的平方。当n为偶数时,直接返回half的平方;当n为奇数时,需要额外乘一次x。如果n为负数,需要将x取倒数。

无论使用哪种方法,都需要注意x为0,n为0或负数的情况。此外,在使用递归方法时,需要注意函数调用栈的深度,当n过大时,可能会导致栈溢出的问题。

  
  

评论区

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