使用 Lisp 简单描述加法运算

开发 开发工具
即使你像我一样根本没学过 lisp 也能看懂下面这段代码,这段代码展示了怎么实现加法运算,这种我们几乎从来不会去想为什么的问题,这几行简单的代码告诉我们如何计算出 3 + 4 的值。

[[180729]]

最近在看 MIT 公开课-计算机程序的构造和解释,即使你像我一样根本没学过 lisp 也能看懂下面这段代码,这段代码展示了怎么实现加法运算,这种我们几乎从来不会去想为什么的问题,这几行简单的代码告诉我们如何计算出 3 + 4 的值

皮亚诺 算术定义的求 x 和 y 之和的过程

  1. ; Define a [+] processor 
  2. (define (+ x y) 
  3.     (if (= x 0) 
  4.         y 
  5.         (+ (-1+x) (1+y)))) 
  6.  
  7. ; x = 3, y = 4 
  8. (+ 3 4) 
  9. (if (= 3 0) 4 (+ (-1+3) (1+4))) 
  10. (+ (-1+3) (1+4)) 
  11. (+ 2 5) 
  12. (if (= 2 0) 5 (+ (-1+2) (1+5))) 
  13. (+ (-1+2) (1+5)) 
  14. (+ 1 6) 
  15. (if (= 1 0) 6 (+ (-1+1) (1+6))) 
  16. (+ (-1+1) (1+6)) 
  17. (+ 0 7) 
  18. (if (= 0 0) 7 (-1+0) (1+7)) 

 

责任编辑:武晓燕 来源: 51CTO专栏
相关推荐

2009-09-08 09:24:50

LINQ查询

2009-09-09 11:24:13

Linq使用数据表

2009-09-09 15:28:43

Linq to obj

2009-09-18 16:00:07

LINQ架构

2009-09-14 10:57:46

LINQ入门

2009-09-15 16:26:36

Linq orderb

2009-09-22 12:45:00

Hibernate性能

2009-09-28 15:43:42

Hibernate O

2009-09-23 10:58:32

Hibernate T

2009-09-22 11:16:27

Hibernate经验

2009-09-27 13:00:56

Hibernate S

2009-06-24 16:42:17

JSF和Facelet

2009-09-24 13:17:37

Hibernate类库

2009-09-21 13:56:09

Hibernate3.

2009-09-10 09:09:40

Linq实体继承

2009-11-19 10:43:54

Oracle Clob

2009-09-10 10:02:36

Frame JSP文件

2010-06-21 10:42:50

BitTorrent协

2009-09-11 10:20:36

Linq扩展方法

2009-11-09 17:27:38

Oracle编码SQL
点赞
收藏

51CTO技术栈公众号