一个开n次方的函数sqrt()

Code:
  1. #define PCS 1e-8   
  2. //x为底数,y为指数   
  3. double pow(double x,double y)   
  4. {   
  5.     double pow=1;   
  6.     if(y==0) return 1.0;   
  7.     else if(y>0){   
  8.             while(y!=0){   
  9.                 pow*=x;   
  10.                 --y;   
  11.             }   
  12.             return pow;   
  13.         }   
  14.     else{   
  15.         y=-y;   
  16.         while(y!=0){   
  17.             pow*=x;   
  18.             --y;   
  19.         }   
  20.         pow=1.0/pow;   
  21.         return pow;   
  22.     }   
  23. }   
  24.   
  25. //x为被开方数,n为开方次数   
  26. double sqrt(double x,unsigned n){   
  27.        
  28.     double lower=0,higher=x;   
  29.     double value=(lower+higher)/2;   
  30.     if(n==1) goto end;   
  31.     //利用二分法求解   
  32.     while(pow(value,n)-x>PCS||pow(value,n)-x<-PCS){   
  33.         if(pow(value,n)-x>0) higher=value ;   
  34.         else lower=value;   
  35.         value=(higher+lower)/2;   
  36.     }   
  37.     return value;   
  38. end:   
  39.     return x;   
  40. }  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值