1
我想創建一個叫做lcm-from-factors的函數來計算兩個數的最小公倍數(m和n)函數的輸入是m-co-group和n-co-group,它們列出所有主要因素和他們的權力。例如,對於m = 2970和n = 163,800,我們將有:如何在球拍中實現遞歸功能?
m-co-groups ='((2 1)(3 3)(5 1)(7 0)(11 1)(13 0)) n-co-groups ='((2 3)(3 2)(5 2)(7 1)(11 0)(13 1))
這些函數返回一個叫做co-已經給予我的因素。我寫了代碼,但函數沒有編譯,因爲我相信我沒有正確實現遞歸。我很感激任何幫助,弄清楚我做錯了什麼。我的代碼如下。
(define (lcm-from-factors m n)
(let-values (((m-co-groups n-co-groups) (co-factor m n)))
(define (recurse m-co-groups n-co-groups)
(let* ((a (first(m-co-groups)))
(b (first(n-co-groups))))
(cond ((>= (rest(a)) (rest(b)))
(+ (expt (first(a)) (rest(a))) (recurse (rest(m-co-groups)) (rest(n-co-groups)))))
(else (+ (expt (first(b)) (rest(b))) (recurse (rest(m-co-groups)) (rest(n-co-groups))))))))))
從我看到的'(co-factor mn)'必須評估到兩個程序列表,因爲你應用了元素('(a)'和'(b)'),這些程序應該因爲你試圖「首先」結果? – Sylwester 2015-02-10 13:20:02
是的我得到的函數確實返回兩個列表,如m = 2970和n = 163,800所示。 – user2904796 2015-02-10 13:25:07
但是,由於某些原因,我無法完成(第一個(m-co-groups))? – user2904796 2015-02-10 13:25:46