generated at
二分法
binary search



参考
二分法の解説と、それを用いて平方根を求める手順が解説されている


二分法を用いて平方根を求めるプログラムをHaskellとRustで書いてみる
hs
c = 0.00000000001 f :: Double -> Double -> Double f x n = x ^ 2 - n calcSqrt :: Double -> Double -> Double -> Double calcSqrt max min n | max - min < c = u | f u n > 0 = calcSqrt u min n | f u n < 0 = calcSqrt max u n where u = (max + min) / 2 sqrt' :: Double -> Double sqrt' n = calcSqrt n 0 n main = print $ sqrt' 2 -- 1.4142135623733338

rs
const C: f32 = 0.00001; fn f(x: f32, n: f32) -> f32 { x * x - n } fn sqrt(n: f32) -> f32 { let mut max = n; let mut min = 0.0; loop { let b = (max + min) / 2.0; if f(b, n) < 0.0 { min = b; } else { max = b; } if max - min < C { return b } } } fn main() { println!("{:?}", sqrt(2.0)); // 1.4142075 }


とあるインターンのコーディング課題で出た
その時はPythonで解いた