c++ - 为什么这段代码不直接使用 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++ 中,尽管您可能依赖于采用整数类型参数的重载之一std::pow
,并根据您进行必要的大小检查来转换结果。但是即使是 C++ 标准也不要求返回尽可能好的结果(参见std::sqrt
IEEE754 下),尽管人们可以合理地认为一个std::pow
函数不返回整数参数的正确结果是有缺陷的。
推荐阅读
- python - simpy处理抢占原因后如何恢复抢占进程
- javascript - Confusion about Flow error wrt Filter function
- typescript - 打字稿中有没有办法声明“嵌套对象内的字符串”之类的东西?
- node.js - 发送包含大量附件的多部分 gmail 电子邮件
- javascript - 从具有 ID 的嵌套文档中检索数据
- go - 将中间件附加到安装在路由器上的路由
- kotlin - 如何从启动器类启动 TornadoFX 应用程序
- java - Dart 中的类对象列表
- node.js - Gulp 生成的我的 Dist 文件夹是否可能包含在 node_modules 中发现的漏洞?
- google-apps-script - Google Apps 脚本:向电子表格所有者显示警报,但不向编辑者显示