这一章的递归很多,引入链表这个概念之后感觉代码的写法变得复杂起来了。
如果大家觉着我的分享有用的话,就请各位靓仔动动小手给我点个赞吧
;chapter 9 test 137
;相似点在我看来就是都是针对链表进行处理
;chapter 9 test 138
;;number -> number
;给定输入的链表,将里面的数字求和
(define (sum-loa loa)
(cond
[(empty? loa) 0]
[else
(+ (first loa)
(sum-loa (rest loa)))]))
(check-expect (sum-loa '()) 0) ;base case
(check-expect (sum-loa (cons 1 '())) 1)
(check-expect (sum-loa (cons 3
(cons 2
(cons 1
'()))))
6)
;chapter 9 test 139
;List-of-numbers -> bool
;给定一个链表,判断是否为正数
(define (pos? lon)
(cond
[(empty? lon) #true]
[else
(and (positive? (first lon))
(pos? (rest lon)))]))
;;List-of-numbers -> number
;给定一个链表,调用辅助函数判断之后
;再对链表内的数字进行求和
(define (check-sum lon)
(cond [(pos? lon) (sum-loa lon)]
[else
(error