Схема нехватки памяти с использованием cond вместо if
Я работаю над своей домашней работой в схеме. Я прошу помощи с этим. По сути, мы создали факультетскую процедуру, и она сработала. Затем мы переписали оператор if с помощью cond. Когда процедура выполняется сейчас, Racket не хватает памяти. Я полагаю, мы попали в бесконечный цикл. Но почему?
Во-первых, вот код
Первая реализация для факультета им.
(define (facult n)
(define (iter product counter)
(if (> counter n)
product
(iter (* counter product)(+ counter 1))))
(iter 1 1))
Теперь мы заменим if, используя этот пользовательский оператор cond.
(define (new-if-statement predicate then-clause else-clause)
(cond(predicate then-clause)
(else else-clause)))
Изменение оригинальной процедуры факультета на:
(define (facult n)
(define (iter product counter)
(new-if-statement (> counter n)
product
(iter (* counter product)(+ counter 1))))
(iter 1 1))
Вещи, которые я знаю: если вы можете использовать только один оператор, когда выполняется оператор then (то же самое с else). Условный позволяет использовать более одного оператора после каждого предиката.
Но как это поможет мне найти решение для бесконечного цикла?