概述
http://zhedahht.blog.163.com/blog/static/254111742009101563242535/
思路:
见过斐波那契,然后这题直接想到了递归2分法求解。
方法一还是蛮不错的,利用了位运算。不过代码写起来比较冗长。
#include <iostream> #include <bitset> using namespace std; double PowerWithExponent_1(double base, size_t exp) { bitset<32> bits(exp); if (bits.none()) return 1.0; double b[32]; for (int i = 0; i < 32; ++i) b[i] = 1.0; double power = 1.0; size_t cnt = 0; for (int i = 0; i < 32 && cnt <= bits.count(); ++i) { if (i == 0) power = base; else power *= power; if (bits.at(i)) b[i] = power, ++cnt; } power = 1.0; for (int i = 0; i < 32; ++i) if (bits.at(i)) power *= b[i]; return power; } double PowerWithExponentRecursively(double base, unsigned int exp) { if (exp == 0) return 1.0; double power = PowerWithExponentRecursively(base, exp >> 1); power *= power; if (exp & 0x01) power *= base; return power; } int main() { double power1 = PowerWithExponent_1(2.3, 3); double power2 = PowerWithExponentRecursively(2.3, 3); cout << power1 << " " << power2 << endl; return 0; }
转载于:https://www.cnblogs.com/kedebug/archive/2012/12/18/2823161.html
最后
以上就是无心服饰为你收集整理的数据结构练习(33)数值的整数次方的全部内容,希望文章能够帮你解决数据结构练习(33)数值的整数次方所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复