换零钱

书是07年买的,看了开头两章就没有进展了,现在又拾起。
计划在这段时间好好学习一下。

第一章的实例换零钱,本来想能不能写出个迭代的实现,想了一天,没有想出来。

中间写了这么一个实现,还是递归的,运行缺出错,没有想明白错在哪里。



(define (count-chg2 amount)
(define (first-of-coins kinds)
(cond ((= kinds 1) 1)
((= kinds 2) 2)
((= kinds 3) 5)
((= kinds 4) 10)
((= kinds 5) 20)
((= kinds 6) 50)
((= kinds 7) 100)
((= kinds 8) 200)
((= kinds 9) 500)
((= kinds 10) 1000)
((= kinds 11) 2000)
((= kinds 12) 5000)
((= kinds 13) 10000)
))
(define (dec-amount amount kinds)
(- amount (first-of-coins kinds)))
(define (dec-kinds kinds)
(- kinds 1))
(define (inc-amount amount kinds)
(+ amount (first-of-coins kinds)))
(define (inc-kinds kinds)
(+ kinds 1))
(define (cc-iter amount kinds count)
(cond ((= 0 amount) (+ 1 count))
((or (< amount 0) (< kinds 0)) count)
(else
(+ (cc-iter (dec-amount amount kinds) kinds count) (cc-iter amount (dec-kinds kinds) count))
)
)
)
(cc-iter amount 4 0)
)


在else的地方,运行报错
-: expects type <number> as 2nd argument, given: #<void>; other arguments were: 1

现在还不明白怎么解决,先记下来,看到后面再回头来看
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值