React是抄袭了函数式,而LISP是函数式的正宗
所以我去看了SICP这本书,全名叫做<<计算机程序的构造和解释SICP>>
从而学习了Lisp,LISP是一种通用高级计算机程序语言, 它是作为因应人工智能而设计的语言,是第一个声明式系内函数式程序设计语言.
基本语法 :   1. 加法运算语法: (+ a b):      // a 加 b,转换成js,就是a + b      例如: (+ 1 2) // 3      2. 乘法运算: (* a b)       // a 乘 b,转换成js,就是a * b       例如: (* 2 3) // 6         3. 命名: (define size 5)       // define 就是用来进行声明的特是字符       // 这里是声明一个变量size,变量的值是5       // 再次进行计算,5 乘 2,js表示就是5 * 2       例如: (* size 2) // 10      4. 复合过程 (就像是声明一个函数):       // define 就是用来进行声明的特是字符       // 声明了一个add的函数,参数是a b,执行逻辑是a 加 b (define (add a b) (+ a b))       例如: (add 1 2) // 3       // 声明了一个sq的函数,参数是a b,执行逻辑是a 乘 b (define (sq a b) (+ (* a a)(* b b)))       例如: (sq 1 2) // 5   5. if(条件判断):       // 声明了一个abs函数,函数的参数是a       // 后面是执行逻辑,如果a大于0,返回值是a,否则返回值是-a       例如: (define (abs a) (if (> a 0) a (- a)))      递归 :   // 用一个例子来做一个递归的函数,求6的阶乘(就是1\*2\*3\*4\*5\*6)    // 思考: 可能会是任意数,所以需要定义函数进行传参,从n开始,乘以n-1,当最后的值等于1,我们就乘以1结束    // define声明一个fn的函数,参数是n   (define (fn n)       // 如果n等于1,返回1,否则就是n乘n-1,但是n-1还可能不等于1,那就继续计算,再次调用fn,传入n-1       // n-1会成为fn的参数,进行下一步计算,直到n等于1,结束计算       (if (= n 1)            1            (* n (fn (- n 1)))       )     )    迭代 :   // 用一个例子来做一个迭代的函数,求6的阶乘(就是1\*2\*3\*4\*5\*6) // 迭代就是从1到n的一个正向操作    // fn对ft进行封装   (define (fn n)      // 调用ft函数      (ft 1 1 n)     )    // 定义ft执行逻辑(result n maxN三个参数)    (define (ft result n maxN)      // 如果 n大于maxN,返回result,否则继续ft,并改写了参数       (if (> n maxN)          result          (ft (* n result) (+ n 1) (maxN))       )     )高阶函数:  在数学和计算机科学中,高阶函数是至少满足下列一个条件的函数     1. 接受一个或多个函数作为输入     2. 输出一个函数
总结:
   学习了Lisp之后,对于递归有了重新的理解,自己调用自己并不是递归    只有满足了层层递进,在层层回归,才叫做递归    尾递归(有递进没有回归)基本都是迭代