日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java黑皮书课后题第6章:**6.22(数学:平方根的近似求法)实现Math类中dsqrt方法的技术:巴比伦法nextGuess = (lastGuess + n / lastGuess) / 2

發布時間:2024/7/23 java 35 豆豆

*6.22(數學:平方根的近似求法)巴比倫法nextGuess = (lastGuess + n / lastGuess) / 2

  • 題目
    • 題目描述與破題
  • 代碼
    • 運行示例

題目

題目描述與破題

翻譯成人話:
想求n的平方根,可以先給lastGuess從1、2開始代入任意一個正整數值;代入公式直到nextGuess<lastGuess(由于是double值:應該是nextGuess-lastGuess<0.0001;
這時假設nextGuess為a,那么下一輪lastGuess的取值就應該是[a, a+1]
本輪再從a-1+0.01開始代入,每輪增加0.01,直到nextGuess-lastGuess<0.0001
將本輪nextGuess值看作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大致范圍后精確到小數點后兩位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

總結

以上是生活随笔為你收集整理的Java黑皮书课后题第6章:**6.22(数学:平方根的近似求法)实现Math类中dsqrt方法的技术:巴比伦法nextGuess = (lastGuess + n / lastGuess) / 2的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。