我是编码新手,对 Racket 博士很感兴趣,现在我面临第一个问题。我创建了这段代码:
(define (collatz n)
(cond ((= n 1) 1)
((> n 1) (collatz_helper n))))
(define (collatz_helper n)
(if (even? n)
(collatz (/ n 2))
(collatz (+ (* 3 n) 1))))
(collatz 100) ;; >1
是否可以将所有中间结果存储在列表或其他内容中,然后打印出来。我的意思是中间结果 n/2 或 3n+1 直到我们得到 1。
例如 n=100 (100, 50, 25, 76, 38, 19, 58, 29, 88, 44, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1)
有人可以给我一个线索或告诉我如何实现这样的事情吗?