gpt4 book ai didi

recursion - 方案将变量传递给可变参数函数

转载 作者:行者123 更新时间:2023-12-04 18:22:23 24 4
gpt4 key购买 nike

我有以下可变参数函数 (define doSomething (lambda (x . rest) ... .该函数使用数字调用,例如:(doSomething 1 2 3 4 5) (因此,该调用 x 将是 1rest 将是 (2 3 4 5) )。

当我尝试递归调用该函数并将第二个数字( 2 )设为 x 时和 rest(3 4 5)我以某种方式收到了 rest参数作为列表列表:((3 4 5)) .

这就是我目前尝试再次调用该函数的方式:(+ x (doSomething (car rest) (cdr rest)))
值得一提的是,我正在使用 Pretty Big .请指教,谢谢。

最佳答案

所以你在第一次通话中混合和匹配休息是什么

(doSomething 1 2 3 4 5)   ; x = 1  rest = '(2 3 4 5)

在您随后的电话中,您最终会得到
(doSomething (car rest) (cdr rest))   ; x=2  rest = '((3 4 5))

因为 rest是一个可变参数,所以它接受第一个参数之后的所有内容,并使其成为一个名为 rest 的列表。为您,因此双重上市。您可能希望使用 apply或其他东西,例如:
(define doSomething (lambda (x . rest) 
(display x)
(if (not (null? rest))
(apply doSomething rest)
#f)))

关于recursion - 方案将变量传递给可变参数函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13139747/

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