这个函数是Tail-Recursive吗?方案

Joh*_*ich 0 recursion scheme tail-recursion racket

以下函数是尾递归的吗?如果没有,我可以做些什么来修改它?

(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))))) 
Run Code Online (Sandbox Code Playgroud)

Ósc*_*pez 6

是的,你的函数是尾递归的,因为递归调用处于尾部位置 - 这意味着它是递归返回后它做的最后一件事.看一下规范,以便更好地了解我们何时进行有效的尾调用以及何时不进行调用.