首页 > 解决方案 > 为什么这段代码不直接使用 C++ 幂函数?有人可以帮助我使用此代码中的电源功能吗?

问题描述

本题是输出单个整数,计算可能组合的个数:

int power(int a, int n)
{
  if (n == 0)
    return 1;
  // else
  if (n % 2 == 0) {
    int temp = power(a, n / 2);
    return temp * temp;
  }
  // else
  return a * power(a, n - 1);
}

标签: c++

解决方案


此函数使用一种称为平方求幂的技术。

这是评估整数类型参数的能力的一种特别有效的方法。标准 C 函数使用浮点参数,即使浮点参数表示整数,C 标准也不需要精确的结果。

在 C++ 中,尽管您可能依赖于采用整数类型参数的重载之一std::pow,并根据您进行必要的大小检查来转换结果。但是即使是 C++ 标准也不要求返回尽可能好的结果(参见std::sqrtIEEE754 下),尽管人们可以合理地认为一个std::pow函数不返回整数参数的正确结果是有缺陷的。


推荐阅读