代码的完整性-面试题11-数值的整数次方
2016-10-02 22:44
337 查看
一、规范的代码:
1、清晰的书写
2、清晰的布局
3、合理的命名
二、代码的完整性
1、功能测试
2、边界测试
3、负面测试
三、错误处理方法
1、函数返回值来告知调用者是否出错。
优点:和系统API一致
缺点:不能方便地使用计算结果
2、设置一个全局变量
优点:能够方便地使用计算结果
缺点:用户可能会忘记检查变量
3、发生错误抛出异常
优点:可以为不同的出错原因定义不同异常类型,逻辑清晰明了
缺点:有些语言不支持异常,抛出异常时对性能有负面影响
数值的整数次方
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
可能漏掉的情况:
1、exponent可能为负,所以正数,负数要分开讨论
2、0的0次方为1,0的正数次方也为1,但是0的负数次方出错,这里使用全局变量的方法告知
3、由于计算机表示小数(float、double)都有误差,我们不能直接用等号(==)判断两个小数是否相等。如果两个小数的差的绝对值很小,比如小于0.0000001,就可以认为它们相等
4、
5、用右移运算符代替了除以2,用位与运算符代替了求余运算符%来判断一个数是奇数还是偶数。位运算的效率比乘除高的多。
Code:
1、清晰的书写
2、清晰的布局
3、合理的命名
二、代码的完整性
1、功能测试
2、边界测试
3、负面测试
三、错误处理方法
1、函数返回值来告知调用者是否出错。
优点:和系统API一致
缺点:不能方便地使用计算结果
2、设置一个全局变量
优点:能够方便地使用计算结果
缺点:用户可能会忘记检查变量
3、发生错误抛出异常
优点:可以为不同的出错原因定义不同异常类型,逻辑清晰明了
缺点:有些语言不支持异常,抛出异常时对性能有负面影响
数值的整数次方
题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。可能漏掉的情况:
1、exponent可能为负,所以正数,负数要分开讨论
2、0的0次方为1,0的正数次方也为1,但是0的负数次方出错,这里使用全局变量的方法告知
3、由于计算机表示小数(float、double)都有误差,我们不能直接用等号(==)判断两个小数是否相等。如果两个小数的差的绝对值很小,比如小于0.0000001,就可以认为它们相等
4、
5、用右移运算符代替了除以2,用位与运算符代替了求余运算符%来判断一个数是奇数还是偶数。位运算的效率比乘除高的多。
Code:
class Solution { public: double Power(double base, int exponent) { bool isInvalidResult=false; bool isNegative=false; if(exponent<0){ if(abs(base-0)<0.0000001){ isInvalidResult=true; return 0.0; } isNegative=true; exponent=-exponent; } if(exponent == 0) return 1; if(exponent == 1) return base; double res=Power(base,exponent>>1); res *= res; if(exponent & 0x1 == 1) res*=base; return isNegative==false?res:1.0/res; } };
相关文章推荐
- 【剑指offer】3.3代码的完整性——面试题11:数值的整数次方
- 剑指offer_面试题11 数值的整数次方_考察代码的完整性
- 剑指offer面试题11 数值的整数次方的Java代码实现
- 剑指offer:(11)代码的完整性: 数值的整数次方
- 剑指Offer面试题11(Java版):数值的整数次方
- 数值的整数次方(剑指offer面试题11)
- P90、面试题11:数值的整数次方
- 剑指offer 3.3 代码的完整性1- 求数值的整数次方
- 【剑指offer】面试题11:数值的整数次方
- 面试题11:数值的整数次方
- 《剑指Offer》面试题11:数值的整数次方
- 剑指offer--面试题11:数值的整数次方--Java实现
- 面试题11 数值的整数次方
- 剑指offer-面试题11.数值的整数次方
- 面试题11:数值的整数次方
- (剑指Offer)面试题11:数值的整数次方
- 《剑指Offer》学习笔记--面试题11:数值的整数次方
- 数值的整数次方(面试题 11)
- 剑指Offer:面试题11 数值的整数次方
- 面试题11 数值的整数次方