以下函数是否是尾递归的?如果没有,我可以做些什么来修改它?
(define (euclids-alg n1 n2)
(cond((= n1 0) n2)
((= n2 0) n1)
((= n1 n2) n1)
((> n1 n2) (euclids-alg (- n1 n2) n2))
((< n1 n2) (euclids-alg n1 (- n2 n1)))))
答案 0 :(得分:6)
是的,你的函数是tail recursive,因为递归调用是在尾部位置 - 这意味着它是递归返回后它做的最后一件事。看一下specification,以便更好地了解我们何时进行有效的尾调用,何时不进行调用。