java 不用内置函数开根号

如题,刚开始用循环直接求了根号,后来模拟了内置函数sqrt求取
主要使用二分法,均已经运行可以出结果
直接上代码:
第一个:
package test;
import java.util.Scanner;
public class xy
{
public static void main(String[] args)
{
System.out.println("请输入您的整数");
Scanner sc=new Scanner(System.in);
double a=sc.nextInt();
double b=0;double c=a;
for(double i=(a+b)/2;;)//a大b小
{
if(((i i-a)>=-0.00001 && (ii-a)<=0.00001) ||((a-i i) <=0.00001 &&(a-ii)>=-0.00001) )//相差小过0.0001
{
System.out.println(a+"取根号的结果是"+i);
break;
}
else if((i i-a)>=0.00001) //i值大
{
c=i;
i=(b+c)/2;
}
else
{
b=i;
i=(b+c)/2;
}
}
}
}
第二个:
package test;
import java.util.Scanner;
public class test
{
public static void main(String[] args)
{
System.out.println("输入你的要求取的值和次方数");
Scanner sc=new Scanner(System.in);
double shu=sc.nextDouble();//值
int a=sc.nextInt();//几次方
double temp=shu;
sqrt(shu,temp,a,0);
}
public static double power(double shu ,int ji)//求shu的ji次方
{
if(ji<=0)
return 1;
else if(ji==1)
return shu;
else
return shu
power(shu,ji-1);
}
public static double sqrt(double shu ,double temp,int ji,double a)
//a小数shu大数ji几次方
{
if(shu<0&&ji%2==0) { System.out.println("输入错误"); return 0; } else if(power((shu+a)/2,ji)-temp<=0.0000001 && power((shu+a)/2,ji)-temp>=-0.0000001)
{
System.out.println(temp+"开"+ji+"次方的值为"+(shu+a)/2);
return 1;
}
else if(power((shu+a)/2,ji)-temp>0.0000001)
{
shu=(shu+a)/2;
return sqrt(shu,temp,ji,a);
}
else
{
a=(shu+a)/2;
return sqrt(shu,temp,ji,a);
}
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值