递归
递归就是在函数体内部直接或者间接的调用自己,我们称这钟就叫做递归,称这种函数就叫做递归函数
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);
}
}
尾递归和递归是相反,因为尾递归每次都会进行一次运算来算出结果,然后作为参数传给下层递归函数,而当最后一次递归完成之后,计算结果其实也已经完成,所以没有一个回归的过程
建议尽量使用尾递归,因为这样可以大大节省栈空间
如有不对欢迎联系改正!!感谢阅读