赞
踩
1.在没有任何数据库函数的情况下,求一个数m开n次方的结果
- #include <iostream>
- using namespace std;
- const double DELTA = 0.000000000001;
- /*
- 递归实现
- eg:
- myPow(2,3)
- myPow(2,1)
- myPow(2,0)
- */
- double myPow(double x, int n)
- {
- if (n == 0)
- return 1.0;
- double tmp = myPow(x, n / 2);
- if (n % 2)
- return n < 0 ? 1 / x*tmp*tmp : x*tmp*tmp;
- else
- return tmp*tmp;
- }
- /*
- x^n = m
- */
- double Newton(double m, int n, double delta)
- {
- if(m <=0 || n <= 0)
- {
- return 0;
- }
-
- double x0 = 1;
- double x1 = ((n-1)+m) / n;//只是给一个初始值而已
-
- while((-delta >= (x1-x0)) || ((x1-x0) >= delta))
- {
- x0 = x1;
- x1 = ( (n-1)*x0 + m / (myPow(x0, n-1))) / n;
- }
-
- return x1;
- }
-
- int main()
- {
- cout << Newton(5, 3, DELTA) << endl;
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。