[英]let loop code in Racket. Recursive factorial
考慮:
(define (factorial x)
(let loop ((x x)
(acc 1))
(if (zero? x)
acc
(loop (sub1 x) (* x acc)))))
我不明白工作是如何讓這里的。 而且,我不明白這段代碼。
您的示例與...相同
(define (factorial x)
(define (loop x acc)
(if (zero? x)
acc
(loop (sub1 x) (* x acc))))
(loop x 1))
其作用與...相同
(define (factorial x)
(loop x 1))
(define (loop x acc)
(if (zero? x)
acc
(loop (sub1 x) (* x acc))))
要了解程序的工作原理,最好的建議是使用DrRacket中的步進器。 由於步進器必須以“中級”教學語言運行,因此將此版本(請注意最后一個示例)粘貼到DrRacket中。 選擇“中級”教學語言,然后單擊步進按鈕。
(define (factorial x)
(loop x 1))
(define (loop x acc)
(if (zero? x)
acc
(loop (sub1 x) (* x acc))))
(factorial 3)
有關顯示步進器的圖像,請參閱此問題: Scheme中的斐波納契
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.