所以我试着写一个尾递归求幂(对于正整数指数)。我带着这个(它是通过平方取幂):
(define (^ n k)
(define (helper n k acc)
(cond
[(zero? k) acc]
[(even? k) (helper (* n n) (/ k 2) acc)]
[else (helper n (- k 1) (* n acc))]))
(helper n k 1))
但是如果我尝试用大论点来运行它,我总是到Racket virtual machine has run out of memory; aborting
。为什么这个函数不被认为是尾递归的?每个条件都直接导致递归执行或终端符号。