递归
递归就是在函数体内部直接或者间接的调用自己,我们称这钟就叫做递归,称这种函数就叫做递归函数
int fact(int c,int n ,int m){
if(c==0) return m;
else return fact(c-1,m,m+n);
}
递归需要依赖于下层的递归函数的结果才能完成计算,最后实际上是最外层递归函数来收尾的,所以在递归完成之后还会回归

尾递归
尾递归就是在函数递归调用之后,直接return,没有多余的操作
int fact(int c,int m,int n,int sum){
if(c==1){
return sum;
}else{
return fact(c-1,n,m+n,sum+n);
}
}
尾递归和递归是相反,因为尾递归每次都会进行一次运算来算出结果,然后作为参数传给下层递归函数,而当最后一次递归完成之后,计算结果其实也已经完成,所以没有一个回归的过程

建议尽量使用尾递归,因为这样可以大大节省栈空间
如有不对欢迎联系改正!!感谢阅读
本文介绍了递归和尾递归的概念,强调了它们在函数调用中的不同之处。递归是函数直接或间接调用自身,而尾递归则是在函数最后进行调用,并直接返回结果。尾递归由于其特性可以避免深度递归导致的栈空间浪费,因此建议在可能的情况下使用。文章还提供了两个示例函数来说明两种递归形式的工作原理。
1568

被折叠的 条评论
为什么被折叠?



