gpt4 book ai didi

recursion - 我可以在方案中使这个迭代过程递归吗?

转载 作者:行者123 更新时间:2023-12-02 22:47:28 25 4
gpt4 key购买 nike

我在Scheme中有这个迭代过程。 (其实我也不知道到底是一个什么样的过程)

(define (contains-double? lst)
(cond
((or (null? lst) (null? (cdr lst))) #f)
((eq? (car lst) (cadr lst)) #t)
(else (contains-double? (cdr lst)))))

它检查是否有两个相邻的相同数字。例如:

(contains-double? '(1 2 3 3 3 5 2))    => #t
(contains-double? '(1 2 3 5 3 2)) => #f
(contains-double? '(1 2 3 2 2)) => #t

我可以让这个过程递归吗?

提前致谢

最佳答案

问题中的过程是递归的(contains-double?正在调用自身),但它生成的过程是迭代的,因为该过程是以尾递归风格编写的 - 这意味着存在过程从递归调用返回后不执行任何操作,除了返回其值。

此过程生成的过程可以通过删除尾递归来实现递归:

(define (contains-double? lst)
(if (or (empty? lst) (empty? (rest lst)))
#f
(or (contains-double? (rest lst))
(= (first lst) (second lst)))))

关于recursion - 我可以在方案中使这个迭代过程递归吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13323753/

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