基本递归与尾递归【C 算法精解】

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

你可能感兴趣的:(基本递归与尾递归【C 算法精解】)