数据结构练习(33)数值的整数次方
2012-12-18 13:53
239 查看
http://zhedahht.blog.163.com/blog/static/254111742009101563242535/
思路:
见过斐波那契,然后这题直接想到了递归2分法求解。
方法一还是蛮不错的,利用了位运算。不过代码写起来比较冗长。
思路:
见过斐波那契,然后这题直接想到了递归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; }
相关文章推荐
- 数据结构-数值的整数次方
- 数据结构——算法之(037)(数值的整数次方)
- 微软等数据结构+算法面试100题(26)--数值的整数次方
- 剑指offer-算法题练习:part12 数值的整数次方
- 剑指Offer编程练习012——数值的整数次方
- 剑指offer系列之十一:数值的整数次方
- 剑指offer:数值的整数次方 代码实现
- 数值的整数次方(代码的完整性)
- 剑指offer-数值的整数次方-二分快速幂-位移代替除2
- 数值的整数次方
- 数值的整数次方——剑指offer
- 剑指offer第12题(数值的整数次方)
- 面试题11:数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 剑指offer--数值的整数次方
- 《剑指offer》数值的整数次方
- 数值的整数次方
- 数值的整数次方(C++ 和 Python 实现)
- 剑指offer:(11)代码的完整性: 数值的整数次方