数值的整数次方
2016-07-06 12:16
337 查看
题目描述: 实现函数 double Power(double base, int exponent), 求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。
分析:
有的面试者可能认为题目很简单,因此顺手就写下了如下代码:
全面但不够高效的解法
其实,上述解法已经比较全面了,但是如果遇到追求效率的面试官,则会提醒你还有更高效的方法。
这个公式很容易使用递归来实现
分析:
有的面试者可能认为题目很简单,因此顺手就写下了如下代码:
double Power(double base, int exponent) { double result = 1.0; for(int i = q; i <= exponent; ++i) result *= result; return result; }如果写出这样的代码,那么请面壁思过!
全面但不够高效的解法
bool g_InvalidInput = false; double Power(double base, int exponent) { g_InvalidInput = false; 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 = PowerWithUnsignedExponent(base, absExponent); if(exponent < 0) result = 1.0 / result; return result; } double PowerWithUnsignedExponent(double base, unsigned int exponent) { double result = 1.0; / for(int i = 1; i <= exponent; ++i) result *= base; return result; } bool equal(double num1, double num2) { if((num1 - num2 > -0.0000001) && (num1 - num2 < 0.0000001)) return true; else return false; }
其实,上述解法已经比较全面了,但是如果遇到追求效率的面试官,则会提醒你还有更高效的方法。
这个公式很容易使用递归来实现
double PowerWithUnsignedExponent(double base, unsigned int exponent) { if(exponent == 0) return 1; if(exponent == 1) return base; double result = PowerWithUnsignedExponent(base, exponent >> 1); result *= result; if((exponent & 0x1) == 1) result *= base; return result; }
相关文章推荐
- 关于PHP浮点数你应该知道的(All 'bogus' about the float in PHP)
- C语言安全编码之数值中的sizeof操作符
- Javascript基础教程之数据类型 (数值 Number)
- Javascript将数值转换为金额格式(分隔千分位和自动增加小数点)
- 基于jQuery实现文本框只能输入数字(小数、整数)
- jquery限定文本框只能输入数字(整数和小数)
- Javascript正则控制文本框只能输入整数或浮点数
- PHP中将字符串转化为整数(int) intval() printf() 性能测试
- js整数字符串转换为金额类型数据(示例代码)
- js数值和和字符串进行转换时可以对不同进制进行操作
- 如何判断一个整数的二进制中有多少个1
- IP地址与整数之间的转换实现代码(asp.net)
- JS操作字符串转换为数值并取整的代码
- js验证整数加保留小数点的简单实例
- 最简单的JavaScript验证整数、小数、实数、有效位小数正则表达式
- java实现整数转化为中文大写金额的方法
- PHP判断FORM表单或URL参数来的数据是否为整数的方法
- js限制文本框只能输入整数或者带小数点的数字
- JavaScript检查数字是否为整数或浮点数的方法
- javascript将浮点数转换成整数的三个方法