Lisp经典算法

Posted 欢迎访问我的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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))  

以上是关于Lisp经典算法的主要内容,如果未能解决你的问题,请参考以下文章

Mark Compact GC (Part one: Lisp2)

JVM详解——垃圾回收算法

几个关于js数组方法reduce的经典片段

《算法竞赛入门经典》3.3最长回文子串

算法竞赛入门经典 例题 3-4 回文串

JVM-11. 垃圾回收概述及算法