基本递归包含两个阶段: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;
}