fixing bug in length+

This commit is contained in:
Alex Shinn 2011-01-02 23:12:46 +09:00
parent 23382e9540
commit f555b50083

View file

@ -35,8 +35,10 @@
(define (length+ x) (define (length+ x)
(if (not (pair? x)) (if (not (pair? x))
0 0
(let lp ((hare (cdr x)) (tortoise x) (res 0)) (let lp ((hare (cdr x)) (tortoise x) (res 1))
(and (not (eq? hare tortoise)) (and (not (eq? hare tortoise))
(if (pair? hare) (if (pair? hare)
(lp (cddr hare) (cdr tortoise) (+ res 1)) (if (not (pair? (cdr hare)))
(+ res 1)
(lp (cddr hare) (cdr tortoise) (+ res 2)))
res))))) res)))))