gpt4 book ai didi

recursion - 初学者方案 : Procedures that return themselves

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

这是我正在阅读的书中的一个例子:

1    (define (length items)
2 (define (length-iter a count)
3 (if (null? a)
4 count
5 (length-iter (cdr a)(+ 1 count))))
6 (length-iter items 0))

我不明白的是 length-iter 怎么知道计数?第一次这样使用 list 调用过程,它将依次定义另一个具有两个参数的过程,我明白了。但是它怎么知道 alist items 呢?它还没有到达第 6 行,其中 items 作为参数 a 传递给 length-iter。不知何故,尽管它已经知道这一点并且能够进行计算。任何有助于澄清这一点的帮助都将不胜感激!

最佳答案

length函数有两部分:

  1. 定义内部函数length-iter;
  2. 调用内部函数length-iter

在调用中,即第 6 行,您将原始 items 列表作为参数传递到内部函数。这是内部函数被调用的地方。以前,您只是定义函数,而不是调用它:

(length-iter items 0)

因此,items 将绑定(bind)到 a0 将绑定(bind)到 count。您可以将内部函数视为一个单独的函数:

(define (length-iter a count)
(if (null? a)
count
(length-iter (cdr a)(+ 1 count))))

然后,将您的 length 函数想象成它只是将所有工作委托(delegate)给 length-iter 函数:

(define (length items)
(length-iter items 0))

这就是您的职能正在做的事情。不同之处在于,length-iter 函数只有 length 知道。

关于recursion - 初学者方案 : Procedures that return themselves,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12450076/

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