Модификация базового выражения if на схеме. Почему это входит в бесконечный цикл?

В Схеме я модифицировал основнойесли' команда как:

(define (modified-if predicate then-clause else-clause)
  (if predicate
      then-clause
      else-clause))

И тогда я определил простую программу генерации факториала, используя модифицированную версию if:

(define (factorial n)
  (modified-if (= n 0)
               (* n (factorial (- n 1)))))

Теперь, когда я вызываю вышеуказанную функцию, она входит в бесконечный цикл. Почему это происходит?

Ответы на вопрос(2)

Ваш ответ на вопрос