gpt4 book ai didi

linked-list - SICP 练习 3.13 - make-cycle

转载 作者:太空宇宙 更新时间:2023-11-03 18:48:00 25 4
gpt4 key购买 nike

我在做exercise 3.13 from SICP但我不确定我的答案。

Exercise 3.13: Consider the following make-cycle procedure, which uses the last-pair procedure defined in Exercise 3.12:

(define (make-cycle x) (set-cdr! (last-pair x) x) x)

Draw a box-and-pointer diagram that shows the structure z created by

(define z (make-cycle (list 'a 'b 'c)))

What happens if we try to compute (last-pair z)?

我想知道为什么

(last-pair z)

变成了无限循环。忽略方框指针图,这是我的理解:

(set-cdr! (last-pair x) x)

(last-pair x) 将是 (cons 'c '()) 对,然后当我们执行 set-cdr! 这对会变成:

(cons 'c (cons 'a (cons 'b (cons 'c (cons 'a (cons 'b (cons 'c (cons 'a (cons 'b (cons 'c ...))))))))))

我的理解正确吗?

最佳答案

没有。

您的回答似乎表明 (last-pair x) 是无限多次调用 cons 的结果。

不是这样。

x 仍然只有 3 个 cons 单元,但最后一个指向第一个,创建一个循环(蛇咬自己在尾部上)。

关于linked-list - SICP 练习 3.13 - make-cycle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43188415/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com