首页 > 解决方案 > 这个函数是尾递归的吗?

问题描述

sum_aux 函数(显然)是一个尾递归函数。sum 也是尾递归函数吗?它只是调用 sum_aux 一次。

否则,我理解为什么 sum_aux 是尾递归的,所以不需要解释。

sum_aux(n,i,k) {
  if( i <= n ) {
    return sum_aux(n,i+1,k+i);
  } else {
    return k;
  }
}

sum(n) {
  return sum_aux(n,1,0);
}

标签: recursiontail-recursion

解决方案


Nosum不是尾递归,因为sum不是递归。它只是碰巧调用了一个递归函数。

根据维基百科

递归函数(编程),引用自身的过程或子程序

sum不调用或引用自身,因此它不是递归的,因此也不是尾递归的。


推荐阅读