C++剑指offer_面试题11_数值的整数次方(*)
来源:互联网 发布:淘宝服装图片拍摄技巧 编辑:程序博客网 时间:2024/06/07 03:26
题目:实现函数 double Power(double base, int exponent),求 base 的 exponent 次方。不得使用库函数,同时不需要考虑大数问题。
通过这道题,了解一些不曾注意的知识点:
1、变量命名要合理且明了
2、需确保代码的完整性,从三个角度下手:
1)功能测试:确保主体功能
2)边界测试:考虑各种边界值
3)负面测试:考虑各种可能的错误输入
3、代码高效性,性能测试:考虑代码的执行效率
4、3种错误处理方法:
1)用函数返回值来告知调用者是否出错
2)当错误发生时,设置一个全局变量
3)异常,当函数运行出错时,抛出一个异常。
对于上述题目,其解答如下:
解决方法一:
只实现了基本功能,即指数 为正的情况,其他输入毫无考虑。
考虑代码的完整性
考虑代码性能,如 2^16 = (2^8)^2 = ((2^4)^2)^2 ........等依次类推,这样减少了很多重复计算,因此改动 上面的代码的一部分:
1、使用递归(思考上面的过程,有助于理解递归)
2、用 位运算,左移一位,代表 除以2,用 与运算 代替取余(%2)来判断是否是奇数。位运算效率更加高。
通过上面这道题,学到了:
1、简单问题,更要考虑全面
2、如何判定两个小数是否相等,不能用“==”,而是要比较两者之间的差值的绝对值,在一个很小的范围内。
3、善用 位运算,可以提高效率。
4、不要把递归想的太复杂
【对照上面的代码来看,如果你考虑每一步的递归过程(包括怎么递归,怎么返回上一步),会很复杂,
但是整体来看,就是 一步递归 应该干的事,对于本题来说,就是 result *= result; 其他几个 if 判断条件是整体过程需要考虑的】
- 剑指Offer_面试题11_数值的整数次方
- 剑指offer_面试题11_数值的整数次方(*)
- C++剑指offer_面试题11_数值的整数次方(*)
- 剑指offer_数值的整数次方
- 面试题11:数值的整数次方
- 面试题11 数值的整数次方
- 面试题11:数值的整数次方
- 面试题11-数值的整数次方
- 面试题11数值的整数次方
- 面试题11:数值的整数次方
- 面试题11:数值的整数次方
- 面试题11:数值的整数次方
- 面试题11:数值的整数次方
- 面试题11:数值的整数次方
- 面试题11:数值的整数次方
- 面试题11:数值的整数次方
- 【面试题11】数值的整数次方
- 面试题11:数值的整数次方
- Java 对象中变量属性的初始化时机与内存控制
- vi与vim的区别
- Cocos2d-x坐标系介绍
- BZOJ 3470: Freda’s Walk
- 【linux】为ubuntu添加PATH环境变量
- C++剑指offer_面试题11_数值的整数次方(*)
- java 找出小于数字N的所有素数
- 两行代码的并查集
- Linux GCC常用命令
- Redis 数据结构
- 开发过程中遇到图片加载之后只有一部分的情况
- 01 什么是webgl
- zebra线程管理源码简析
- POJ 2481 Cows(树状数组)