我知道如何計算的一些數字的總和:如何計算方案中的給定數量的數字遞歸迭代和
(define (sum-of-digits x)
(if (= x 0) 0
(+ (modulo x 10)
(sum-of-digits (/ (- x (modulo x 10))
10)))))`
但我只是沒有一個線索,使數字的計數。也不知道如何通過線性迭代進度來實現這一點。
謝謝!
我知道如何計算的一些數字的總和:如何計算方案中的給定數量的數字遞歸迭代和
(define (sum-of-digits x)
(if (= x 0) 0
(+ (modulo x 10)
(sum-of-digits (/ (- x (modulo x 10))
10)))))`
但我只是沒有一個線索,使數字的計數。也不知道如何通過線性迭代進度來實現這一點。
謝謝!
你是非常接近到答案。
爲了弄清楚如何將位數總和轉換爲位數,請嘗試編寫一些測試用例。測試用例必須包含一個調用函數的例子,以及預期的結果。
請注意,這是生成遞歸的一個例子,你不應該直到解決它,直到你做了一堆問題,比如「在列表中添加數字」,「計數元素列表中的」等
終於完成了!非常感謝! – user1721224
關於你的每一個問題的一些提示:
1
將遞歸解決方案(如您的)轉換爲尾遞歸(生成線性迭代進度的方法)有幾種策略。這裏是一個簡短的清單:
非常感謝!第一個真的有效!還在繼續工作 – user1721224
注意:這個問題並不一定需要遞歸。另一種方法是取* x *的* log10 *。 – dyoo