剑指offer 求一个数的n次方,不考虑大数问题
2017-03-08 18:50
363 查看
一定得注意取值,当指数小于0,指数大于0,指数等于0时
如果指数和底数都是0时怎么办,还有浮点数的比较
如果指数和底数都是0时怎么办,还有浮点数的比较
#include <stdio.h> #define ESP 0.0000001 typedef enum bool{ false = 0, true = 1 }bool; bool value_num = false; //定义一个全局变量用来区分正确时返回的0和错误时返回的0 double PowWithunsignedexp(double Base, unsigned int exp); bool equal(double One, double Two); double MyPow (double Base, int exp) { bool value_num = true; double result; unsigned int unsignedexp; if ( equal(Base,0.0) && exp == 0) { value_num = false; return 0.0; //指数和底数都是0时返回0,value_num为false说明传值错误 } if (exp == 0) return 1.0; else if (exp < 0) unsignedexp = (unsigned int)(-exp); //指数为负数时取绝对值 else unsignedexp = (unsigned int)(exp); result = PowWithunsignedexp (Base,unsignedexp); if(exp < 0) return (1/result); else return result; } double PowWithunsignedexp(double Base, unsigned int exp) //用递归求幂,因为指数为大于0的指数,有奇数和偶数两种情况 { if (exp == 1) return Base; else if (exp%2 == 0) return PowWithunsignedexp(Base,exp/2)*PowWithunsignedexp(Base,exp/2); else return PowWithunsignedexp(Base,exp/2)*PowWithunsignedexp(Base,(exp/2+1)); } bool equal(double One, double Two) //比较浮点数的大小 { if ((One - Two) <= ESP && (Two - One) <= ESP) return true; return false; }
相关文章推荐
- 求一个数值的整数次方,不考虑大数的问题
- 剑指offer_面试题15_链表中倒数第k个节点(考虑问题要全面)
- 实现函数 double Power(double base,int exponent),求base的exponent次方,不得使用库函数,不用考虑大数问题
- 剑指offer——面试题39:扩展问题判断一个树是否是平衡二叉树(递归)
- 实现函数 doubule Power(double base, int exponent),求base的exponent次方,不得使用库函数,同时不需要考虑大数问题
- 剑指offer 数值的整数次幂,求base的exponent次方,不能使用库函数,同时不需要考虑大数问题
- 数值的整数次方(不考虑大数问题)
- C语言 整数的整数次方(不考虑大数问题)
- 剑指offer——大数相乘问题(BigInteger的大致实现思路)
- 求a的b次方,不用考虑大数问题,不使用库函数
- 剑指offer_面试题12_打印1到最大的n位数(大数问题)
- 剑指offer编程题Java实现——面试题12相关题大数的加法、减法、乘法问题的实现
- 剑指offer 大数问题 全排列
- 剑指offer_面试题12_打印1到最大的n位数(大数问题)
- 【转】求一个类的sizeof应考虑的问题
- 一个优美的架构需要考虑的几个问题
- 面试经典之剑指offer--58--八皇后问题
- 写一个函数,完成内存之间的拷贝。[考虑问题是否全面](转)
- 经营一个优秀网站需要考虑的问题