有人可以解释一下以下函数如何递归工作。我可以理解更简单的递归示例,但我不明白如何(smooth n (- k 1))
在此处的 or 语句下给出所需的值。
(define (divides a b)
(= (modulo b a) 0))
(define (smooth n k)
(and (>= k 2)
(or (divides k n)
(smooth n (- k 1)))))
(define (isprime p)
(if (< p 2)
#f
(not (smooth p (floor (sqrt p))))))
我写了一个isprime
不用1
作素数的函数,但我仍然不太明白上述函数是如何工作的/它是如何与这个例子一起工作的。