Gra*_*ate 3 lisp recursion scheme sicp
(define (fast-prime? n times)
(cond ((= times 0) true)
((fermat-test n) (fast-prime? n (- times 1)))
(else false)))
Run Code Online (Sandbox Code Playgroud)
此代码来自SICP,第 1.2.6 章。该过程使用tail-recursion,因此在计算时不会导致线性递归,换句话说,它是迭代的。如果我使用or / and而不是cond重写过程,会导致线性递归吗?
(define (fast-prime? n times)
(or (= times 0)
(and (fermat-test n) (fast-prime? n (- times 1)))))
Run Code Online (Sandbox Code Playgroud)