-1
我剛剛進入編碼領域,對Dr.Retet感興趣,現在我面臨着我的第一個問題。我創建了這個代碼:Dr. Racket:保存中間結果 - Collatz猜想
(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)
有人可以給我一個線索或告訴我如何實現這樣的事情嗎?
您對調試輸出感興趣嗎?或者你想使用中間結果做些什麼? –
我想使用中間結果的東西。但首先,我想了解您如何存儲它們,然後「打印」它們。我的意思是:我想知道程序完成了哪些步驟才能達到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)作爲列表或東西。 – herbrand
出於調試目的,您可以使用'display'。爲了保持結果,您需要隨時建立一個列表。 –