gpt4 book ai didi

scheme - 方案中的 Collat​​z 函数

转载 作者:行者123 更新时间:2023-12-05 08:24:12 24 4
gpt4 key购买 nike

所以我试图在方案中迭代地解决 collat​​z 函数,但我的测试用例一直显示为

(define (collatz n)   
(define (collatz-iter n counter)
(if (<= n 1)
1
(if (even? n) (collatz-iter (/ n 2) (+ counter 1))
(collatz-iter (+ (* n 3) 1) (+ counter 1))
)
)
)
)

但是,我的测试用例一直导致“#[constant 13 #x2]”。如果有的话,我写错了什么?

最佳答案

您忘记调用 collat​​z-iter。此外,不清楚您打算对 counter 做什么,您只是递增它,但从未实际使用它的值 - 您的过程将总是返回1(假设 Collat​​z 猜想为真,这似乎很有可能)。

我猜您打算退还柜台,所以这里是解决程序的方法:

(define (collatz n)
(define (collatz-iter n counter)
(if (<= n 1)
counter ; return the counter
(if (even? n)
(collatz-iter (/ n 2) (+ counter 1))
(collatz-iter (+ (* n 3) 1) (+ counter 1)))))
(collatz-iter n 1)) ; call collatz-iter

这就是 wikipedia 中示例的工作方式:

(collatz 6)
=> 9

(collatz 11)
=> 15

(collatz 27)
=> 112

所以基本上我们是在计算给定数字的 Collat​​z 序列的长度。

关于scheme - 方案中的 Collat​​z 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19285547/

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