(define (fast-prime? n times)
(cond ((= times 0) true)
((fermat-test n) (fast-prime? n (- times 1)))
(else false)))
此代码来自 SICP ,第1.2.6章。该过程使用尾递归,因此在计算时它不会导致线性递归,换句话说它是迭代 。如果我使用或/和而不是 cond 重写过程,是否会导致线性递归?
(define (fast-prime? n times)
(or (= times 0)
(and (fermat-test n) (fast-prime? n (- times 1)))))