我开始使用algortihm进行组合,但是当m在递归中变为0时,第一个y将是'(()),所以程序将显示只有()会重复4 *列表时间的大小。scheme - 显示所有具有最大公约数的元素对1
(define (pairs-GCD L)
(define (comb m lst)
(cond ((= m 0) '(()))
((null? lst) '())
(else (append (map (lambda (y) (cond (equal? (GCD(car lst) y) 1) (cons (car lst) y))) (comb (- m 1) (cdr lst))) (comb m (cdr lst))))))
(comb 2 L)
) 编辑:校正后的输出 输入: '(2 5 3 6 11 15) 输出:'((2 5)(2 3)(2 11)(2 15)(5 3) (5 6)(5 11)(6 11)(3 11)(6 11)(11 15))
你能提供一个带有预期输出的示例输入吗? –
刚刚添加了一些输入和预期的输出 – zaig
嗯,这不是'lcm',看起来更像'gcd'。另外,为什么'(2 15)'和'(11 15)'不包含在输出中? –