数值的平方
来源:互联网 发布:1022网络驱动 编辑:程序博客网 时间:2024/05/01 09:04
注意:
1. 指数为负数的情况
2. 对 0 求倒数的情况
3. 判断两个符点数是否相等不能用等号
思路:求一个数的n 次方可以采用递归的思想
如:求 2^32 => 求 (2^16) 的平方。
而求 2^16 => 求 (2^8) 的平方。
总结如下:
#include <iostream>using namespace std;bool g_InvalidInput = false; // 用于区分是否输入的值有错误bool equal(double n1, double n2){ if(n1 - n2 > -0.0000001 && n1 - n2 < 0.0000001) return true; else return false;}double PowerWithUnsignedExponent(double base, unsigned int exponent){ double result = 1.0; for(int i = 1; i <= exponent; i++) result *= base; return result;}double PowerWithUnsignedExponent1(double base, int exponent){ if(exponent == 0) return 1; if(exponent == 1) return base; double result = PowerWithUnsignedExponent1(base, exponent>>1); result *= result; if(exponent & 0x1) result *= base; return result;}double Power(double base, double exponent){ if(equal(base,0.0) && exponent < 0){ g_InvalidInput = true; return 0.0; } unsigned int absExponent = (unsigned int) exponent; if(exponent < 0) absExponent = (unsigned int) -exponent; double result = PowerWithUnsignedExponent1(base, absExponent); if(exponent < 0) return 1.0 / result; return result;}int main(int argc, const char * argv[]) { double result = Power(2, -3); double result1 = Power(0, 0); if(g_InvalidInput == true) cout<<"您输入的数值有误"<<endl; else cout<<result; return 0;}
0 0
- 数值的平方
- 数值精度------开方与平方
- 1的平方-2的平方+3的平方-4的平方...-100的平方,结果
- 【CodeForces Yandex Algorithm 2011 D】【莫队分块】区间所有数值乘其数个数的平方
- 平方数的构建
- html平方的写法
- 平方数的判断
- 平方数的研究
- x的平方
- 一个数的平方
- 元素的平方
- 1的平方加到n的平方
- 平方的和与和的平方之差
- 方差为平方的均值减去均值的平方
- 17的平方与快捷方式
- 求一个数的平方
- 无平方因子的数
- (he)的平方等于she
- 在C++中动态创建二维数组和三维数组
- bzoj2440 [中山市选2011]完全平方数
- 阿里沈询:分布式事务原理与实践
- 2017.3.25 圆桌聚餐 思考记录
- 开放式厨房有利有弊 德普支招解决油烟问题
- 数值的平方
- 递推递归练习 D 汉诺塔系列1
- 冒险家模式
- 1002. 写出这个数 (20)
- 简单实现python socket 服务器客户端
- leetcode解题之543. Diameter of Binary Tree Java版 (二叉树的最大直径)
- 最优布线问题(普里姆算法)
- [李景山php]每天laravel[007]-laravel 中级任务翻译---目录
- 拼命三郎模式