错误我无法看到

时间:2016-02-24 13:40:27

标签: scheme

(define (length2 item)
  (define (test item count)
  (if (null? item)
      count
     ((+ 1 count) (test item (cdr item)))))
    (test item 0))

将此视为错误:

+:合同违规   预期:数量?   给出:(2 3)   论点位置:第二   其他论点。:

我不明白什么是错的?我试着让它迭代。

1 个答案:

答案 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