还是那句话,经典不妨一看再看
Natural这章的视频可以在edx上看,也可以点开youtube的公开课链接看
这里的总结是假设你都看过视频了( ̄<  ̄)>
在编程里, 经常会遇到的事情是在一段数字范围内做一些事情,
例如从0 到 10 里面取全部偶数,
以1到20 的数字为边长 各产生一个正方形,等等。。。
为什么会这么无聊?
因为程序员喜欢数数。。。
在学过self-reference 之后,
用self recursion的概念定义了Natural
之前natural 是一个自然数的概念(primary data) 例如age is Natural
这里的natural是专门用来处数数的应用
这个template 是可以直接使用,
(@template Natural)写上这句就行
下面过一题例题
Design a function that consumes Natural number n and produces the sum of all
the naturals in [0, n].
(require spd/tags)
(@htdf sum)
;;consumes Natural number n and produces the sum of all [0, n].
(check-expect (sum 0) 0)
(check-expect (sum 3) 6)
(@template Natural)
; (define (sum n) 0) ;stub
(define (sum n)
(cond [(zero? n) 0]
[else
(+ n
(sum (sub1 n)))]))
运算过程
(sum 3)
=(+ 3 (sum 2))
=(+ 3 (+ 2 (sum 1)))
=(+ 3 (+ 2 (+ 1 (sum 0))))
=(+ 3 (+ 2 (+ 1 0)))
=6
Natural 单独的题目一般很少, 多数情况下是结合其他的章节出题
例如 Natural + helper, Natural + two-one-of 等等