• 实现sqrt算法


     1 package com.company;
     2 
     3 
     4 import org.junit.Test;
     5 
     6 public class Lesson3_2 {
     7 
     8     /**
     9      * @Description: 计算大于1的正整数之平方根
    10      * @param n-待求的数, deltaThreshold-误差的阈值, maxTry-二分查找的最大次数
    11      * @return double-平方根的解
    12      */
    13     public static double getSqureRoot(int n, double deltaThreshold, int maxTry) {
    14 
    15         if (n <= 1) {
    16             return -1.0;
    17         }
    18 
    19         double min = 1.0, max = (double)n;
    20         for (int i = 0; i < maxTry; i++) {
    21             double middle = (min + max) / 2;
    22             double square = middle * middle;
    23             double delta = Math.abs((square / n) - 1);
    24             if (delta <= deltaThreshold) {
    25                 return middle;
    26             } else {
    27                 if (square > n) {
    28                     max = middle;
    29                 } else {
    30                     min = middle;
    31                 }
    32             }
    33         }
    34 
    35         return -2.0;
    36 
    37     }
    38 
    39     @Test
    40     public  void Test1()
    41     {
    42         int number = 10;
    43         double squareRoot = Lesson3_2.getSqureRoot(number, 0.000001, 10000);
    44         if (squareRoot == -1.0) {
    45             System.out.println("请输入大于1的整数");
    46         } else if (squareRoot == -2.0) {
    47             System.out.println("未能找到解");
    48         } else {
    49             System.out.println(String.format("%d的平方根是%f", number, squareRoot));
    50         }
    51     }
    52 }
  • 相关阅读:
    如何编译完全使用静态库的可执行文件
    交叉编译jpeglib遇到的问题
    安装SDL遇到的问题
    软链接/硬链接删除事项
    alias命令使用
    Linux下学习摄像头使用
    018 字符串类型及操作
    017 示例3-天天向上的力量
    016 数字类型及操作
    015 基本数据类型
  • 原文地址:https://www.cnblogs.com/xhu218/p/16267346.html
Copyright © 2020-2023  润新知