《程序设计方法(第二版)》第九章 9.1-9.2 习题答案分享

        这一章的递归很多,引入链表这个概念之后感觉代码的写法变得复杂起来了。

        如果大家觉着我的分享有用的话,就请各位靓仔动动小手给我点个赞吧

;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 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橡胶张小说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值