不用内置函数开根号

如题,刚开始用循环直接求了根号,后来模拟了内置函数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(((ii-a)>=-0.00001 && (ii-a)<=0.00001) ||((a-ii) <=0.00001 &&(a-ii)>=-0.00001) )//相差小过0.0001
{
System.out.println(a+"取根号的结果是"+i);
break;
}
else if((ii-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);
}
}
}

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Java经典问题算法大全 /*【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子...
    赵宇_阿特奇阅读 2,138评论 0赞 2
  • 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔...
    叶总韩阅读 5,270评论 0赞 41
  • 比较笨就把所有的都复制过来吧,以后再整理://for(表达式1,条件表达式;表达式2){// 语句块//} pu...
    人鱼姑娘5394阅读 804评论 0赞 0
  • 1 顺序语句 语句:使用分号分隔的代码称作为一个语句。 注意:没有写任何代码只是一个分号的时候,也是一条语句,...
    哈哈哎呦喂阅读 501评论 0赞 0
  • 禾谷, 现在妈妈在回家的路上给你写信,今天项目结束后又开会到现在,估计此刻你已经在梦乡了。 今天妈妈在课程中看到了...
    草马束木阅读 286评论 0赞 2

友情链接更多精彩内容