3
我在計劃語法中有點新......我試圖做一個簡單的程序,在其中輸入一個整數,如果整數甚至是做某件事情,如果它奇怪的做別的事情。 我能夠做到這一點。現在,我需要做一個循環,我可以遞減的數量,直到它等於1 這裏是我的代碼:Scheme while while循環
#lang racket
(define (even? n)
(if (eqv? n 0) #t
(odd? (- n 1))))
(define (odd? n)
(if (eqv? n 0) #f
(even? (- n 1))))
; this is the function that i wanted to be inside the loop
(define (sequence n)
(cond
[(even? n) n(/ n 2)]
[(odd? n) n(+(* n 3) 1) ])
)
(sequence 5)
輸出應該是數字的序列。換句話說,它應該在列表中。
感謝這是完美的,快速 – Muhsag 2013-02-13 22:57:25
請你能解釋在代碼n的哪一部分遞減1,如果我有一個案件,我想增加,而不是。謝謝 – Muhsag 2013-02-13 23:00:34
在Collatz序列中,數字不會遞減_by one_。如果n是偶數,那麼我們通過在這部分中將其減半來減少它(/ n 2)。如果n是奇數,那麼我們實際上在這個部分增加它:'(+(* n 3)1)'。注意在這兩種情況下,'n'的修改值作爲參數傳遞給下一個遞歸調用,這就是我們通常在方案 – 2013-02-13 23:03:59