面试题11—数值的整数次方

来源:互联网 发布:淘宝客服自动核对地址 编辑:程序博客网 时间:2024/06/08 14:26

题目:实现函数double Power(double num,int n),求num的n次方,不得使用库函数,不需要考虑大数问题。

代码示例:

#include<iostream>using namespace std;const double eps = 0.00000001;long double Power(double num, int n){if (n > 0){long double res = num;for (int i = 0; i < n-1; i++)res *= num;return res;//===略微优化一下乘方。/*long double tmp = Power(num, n >> 1);long double res = tmp*tmp;if ((n &0x01)==1)res *= num;return res;*/}else if (n == 0){if (num > eps || num < -eps)return 1;elsethrow exception("0的0次方无意义!");}else{if (-eps < num&&num < eps)throw exception("0的负数次方无意义!");else{return 1.0/Power(num, -n);}}}void main(){double num = 0;int n = 3;long double res = 0;cout << num << "的" << n << "次方为:";try{res = Power(num, n);}catch(exception &e){cout << e.what() << endl;}cout << res << endl;}


原创粉丝点击