GCD списка в схеме - PullRequest
       0

GCD списка в схеме

0 голосов
/ 22 февраля 2020

Мне интересно, как бы я написал функции gcd по всему списку в схеме. Я пытался выучить язык и наткнулся на вопрос для одного из других языков, и мне было любопытно.

Пока это то, что у меня есть. Запуск просто дает мне ошибку.

(define insert (x xs)
    (if (null? xs)
        (list1 x)
        (if (< x (car xs))
            (cons x xs)
            (cons (car xs) (insert x (cdr xs))))))

;; DEFINE insertion-sort HERE

(define insertion-sort(l)
    (if (null? cdr l)   
        l
        (cons (insert (car l) (cdr l)) (insertion-sort (cdr l) ) )
    )
)

1 Ответ

0 голосов
/ 23 февраля 2020

Поиск ГКД - это операция, которая является как коммутативной, так и ассоциативной. Это означает, что (gcd ab c) = (gcd a (gcd b c)) = (gcd (gcd ab) c).

Так что все, что вам нужно сделать, это сделать процедуру который находит GCD для двух чисел (скажем, с использованием алгоритма Евклида), а затем сгибает / уменьшает ваш список чисел с помощью этой процедуры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...