Функция GCD в scheme48 из чистого металла

#algorithm #scheme48

#алгоритм #scheme48

Вопрос:

Я пытаюсь написать функцию GCD в scheme48 с нуля, но продолжаю заставлять функцию входить в бесконечный цикл. Я считаю, что логика верна — очевидно, я что-то упускаю. Любая помощь была бы отличной. Также я не могу использовать встроенные функции, такие как abs() в остатке, в моем решении.

 (define (mygcd a b)
(cond ((equal? a b) a)
  ((> a b) (mygcd (- a b)(b))
  (else (mygcd (a)(- b a))))
 

Комментарии:

1. Отсутствует тест для b == 0.

2. куда бы я это поместил?