c++ - 在 O(1) 中计算幂函数
问题描述
我写了一个函数来计算 O(logb) 中的 pow(a,b)。
double pow(double a, int b){
double res=1;
while(b>0){
if (b%2==1){
res=res*a;
}
b=b>>1;
a=a*a;
}
return res;
}
我偶然发现了是否可以及时编写函数 pow(double a, double b) 的问题O(1)
。然而我还没有找到答案。
解决方案
如果您不允许自己使用标准 pow/exp/log 函数或预计算表,但允许浮点乘法,那么您的解决方案是最佳的(恒定时间是不可能的)。
推荐阅读
- android - 在 AudioFlinger 中捕获音频数据并保存到原始 PCM 文件
- node.js - REST API - 如何实现用户特定授权?
- javascript - jQuery/HTML - 使用等宽字体时,如何让空格 () 占用与另一个字符相同的空间?
- c# - 在 RedirectToAction 之后,HttpPost 没有将数据保存在存储库中
- python - Pyspark:将一列中的值与另一列中同一行的列表匹配
- php - 为什么我会弹出这个不正确的条目,但我的 php 文件执行登录成功
- java - 当我导入迁移到 androidX 中的 New Places SDK 客户端时。无法访问 getPhotoMetadatas() 方法
- html - 无法使用 selenium webdriver (Java) 从 html 标签中获取属性
- python - CreateView保存表单后如何进入另一个页面
- android - android中targetSdkVersion的建议是什么?