Java黑皮书课后题第6章:**6.22(数学:平方根的近似求法)实现Math类中dsqrt方法的技术:巴比伦法nextGuess = (lastGuess + n / lastGuess) / 2
生活随笔
收集整理的這篇文章主要介紹了
Java黑皮书课后题第6章:**6.22(数学:平方根的近似求法)实现Math类中dsqrt方法的技术:巴比伦法nextGuess = (lastGuess + n / lastGuess) / 2
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
*6.22(數(shù)學(xué):平方根的近似求法)巴比倫法nextGuess = (lastGuess + n / lastGuess) / 2
- 題目
- 題目描述與破題
- 代碼
- 運行示例
題目
題目描述與破題
翻譯成人話:
想求n的平方根,可以先給lastGuess從1、2開始代入任意一個正整數(shù)值;代入公式直到nextGuess<lastGuess(由于是double值:應(yīng)該是nextGuess-lastGuess<0.0001;
這時假設(shè)nextGuess為a,那么下一輪lastGuess的取值就應(yīng)該是[a, a+1]
本輪再從a-1+0.01開始代入,每輪增加0.01,直到nextGuess-lastGuess<0.0001
將本輪nextGuess值看作n的平方根
實現(xiàn)下面方法返回n的平方根:public static double sqrt(long n)
主方法:接收需要求平方根的n值(以long接收),傳入n值
sqrt方法:求n的平方根并返回值給主方法
代碼
import java.util.Scanner;public class Test6_22 {public static void main(String[] args) {// 接收需要求平方根的n值(以long接收)Scanner input = new Scanner(System.in);System.out.print("請輸入一個n值:");long n = input.nextLong();// 傳入n值double feedback = sqrt(n);// 返回sqrt值System.out.println(feedback);}public static double sqrt(long n){// 第一輪:lastGuess取整double nextGuess = 2, lastGuess = 0;for (lastGuess = 1 ; nextGuess - lastGuess >= 0.0001 ; lastGuess++){nextGuess = (lastGuess + n / lastGuess ) / 2;}// 第二輪:獲取lastGuess大致范圍后精確到小數(shù)點后兩位for (lastGuess = nextGuess; nextGuess - lastGuess >= 0.0001 ; lastGuess += 0.01){nextGuess = (lastGuess + n / lastGuess ) / 2;}return nextGuess;} }運行示例
請輸入一個n值:16 4.0 請輸入一個n值:10 3.166666666666667總結(jié)
以上是生活随笔為你收集整理的Java黑皮书课后题第6章:**6.22(数学:平方根的近似求法)实现Math类中dsqrt方法的技术:巴比伦法nextGuess = (lastGuess + n / lastGuess) / 2的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java黑皮书课后题第6章:*6.21(
- 下一篇: Java黑皮书课后题第6章:*6.23(