Modyfikacja podstawowego wyrażenia if w schemacie. Dlaczego wchodzi w nieskończoną pętlę?
W schemacie zmodyfikowałem podstawowe polecenie „if” jako:
(define (modified-if predicate then-clause else-clause)
(if predicate
then-clause
else-clause))
Następnie zdefiniowałem prosty program generujący silniki, używając zmodyfikowanej wersji if:
(define (factorial n)
(modified-if (= n 0)
(* n (factorial (- n 1)))))
Teraz, gdy wywołam powyższą funkcję, przechodzi ona w nieskończoną pętlę. Dlaczego tak się dzieje?