(define (length2 item)
(define (test item count)
(if (null? item)
count
((+ 1 count) (test item (cdr item)))))
(test item 0))
将此视为错误:
+:合同违规 预期:数量? 给出:(2 3) 论点位置:第二 其他论点。:
我不明白什么是错的?我试着让它迭代。
答案 0 :(得分:1)
在递归中传递参数的方式存在问题,请注意count
是第二个参数。这应该解决它:
(define (length2 item)
(define (test item count)
(if (null? item)
count
(test (cdr item) (+ 1 count))))
(test item 0))
按预期工作:
(length2 '(1 2 3 4 5))
=> 5