zoukankan      html  css  js  c++  java
  • Lisp经典算法

    求平方根

    SUCCESSIVE AVERAGING DUE TO HERON OF ALEXANDRIA
    ** TO FIND AN APPROXIMATION TO SQRT(X) **

    1. MAKR A GUESS G
    2. IMPROVE THE GUESS BY AVERAGING G AND X/G
    3. KEEP IMPROVING THE GUESS UNTILE IT IS GOOD ENOUGH
    4. USE 1 AS AN INITIAL GUESS

    算法思想

    (define (try guess x)
        (if (good-enough? guess x)
            guess
            (try (improve guess x) x)))
    (define (sqrt x) (try 1 x))
    

    参考代码

    注:此代码来自https://blog.csdn.net/jazz_charles/article/details/48974029

    (define (square x) (* x x)) //定义求平方  
    (define (average x y) (/ (+ x y) 2)) //定义求平均值  
    (define (sqrt x) //定义求平方根  
          (define (accurate guess) //定义判断精确度  
               (<   (abs (-  (square guess)  x)) 0.001))  
          (define (improve guess) //定义改进近似值  
              (average x  (/ x guess)))  
          (define (sqrt-iter guess) //定义主体迭代求解  
              (if   (accurate guess)  
                     guess  
                    (sqrt-iter (improve guess))))  
          (sqrt-iter 1.0))  
    

    求两数之和

    迭代

    (define (+ x y)
        (if (= x 0)
            y
            (+ (-1+ x) (1+ y))))
    
    

    斐波那契数列

    (define (fib n)
        (if (< n 2)
            n
            (+ (fib (- n 1))
                (fib (- n 2)))))    
    

    求和算法

    等差数列求和

    [sum _{i=a}^{b}i ]

    (define (sum-int a b)
        (if (> a b)
            0
            (+ a
                (sum-int (1+ a) b))))
    

    莱布尼茨公式求π/8

    [sum_{i=a}^{b}frac{i}{i(i+2)} ]

    (define (pi-sum a b)
        (if (> a b)
            0
            (+ (/ 1 (* a (+ a 2))))
                (pi-sum (+ a 4) b))))
    
  • 相关阅读:
    手机获取ip地址
    CoreGraphics 自定义button
    抽奖及背景图片的透明度设置时连着转盘图片也跟着虚幻解决方法
    多个UIcollctionView,返回个数不对错误
    collectionview item 间距
    判断键盘的高度
    orcle 11g 的安装图解
    clone()详解
    isAssignableFrom ,isInstance , Instanceof() 区别
    三元表达式
  • 原文地址:https://www.cnblogs.com/zhuxiaoxi/p/8654113.html
Copyright © 2011-2022 走看看