基本递归包含两个阶段:1,递归阶段 2,回归阶段
int fact(int n)
{if( n < 0){
return 0;
}else if(n == 0){
return 1;
}else if(n == 1){
return 1;
}else{
return n*fact(n - 1);
}
}
int main(){
int i = fact(6);
printf("%d",i);
}
尾递归: 通过将目前的值传到下次中,因此只有递归阶段,没有回归阶段。
int facttail(int n,int a){
if(n < 0){
return 0;
}else if(n == 0){
return 1;
}else if( n == 1){
return a;
}else{
return facttail(n - 1,n * a);
}
}
int main(){
int i = facttail(6,1);
printf("%d",i);
return 0;
}
本文详细介绍了递归和尾递归的概念,通过代码实例展示了如何实现阶乘计算的递归和尾递归版本,并对比了两者在性能上的区别。
364

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



