1. 程式人生 > >C語言遞迴的應用之迴文字元

C語言遞迴的應用之迴文字元

遞迴應用之迴文字元的判別:

  有一種特殊形式的字串,其正反序相同,被稱為“迴文字串”。例如LeveL就是一個迴文字串。

輸入:
          字串

輸出:
          Yes或者No

說明:
          如輸出Yes,說明輸入的字串是一個迴文字串
          輸出No,說明輸入的字串不是一個迴文字串
          請使用遞迴演算法實現。

程式碼如下:
  1. #include<stdio.h>
  2. #include<string.h>
  3. int huiwen(char str[],int a,int b )  
  4. {  
  5.     if
    (str[a]!=str[b]) {  
  6.         return 0;  
  7.     }  
  8.     elseif(a==b||(a+1==b&&str[a+1]==str[b])) {  
  9.         return 1;  
  10.     }  
  11.     elseif(str[a]==str[b])  {  
  12.         return huiwen(str,a+1,b-1);  
  13.     }  
  14. }  
  15. int main()  
  16. {  
  17.     char str[800];  
  18.     int t,p;  
  19.     gets(str);    
  20.     t=strlen(str);  
  21.     if(t==0)  
  22.         printf("Yes\n");  
  23.     else {  
  24.         p=huiwen(str,0,t-1);  
  25.         if(p==1)  
  26.             printf("Yes\n");  
  27.         elseif(p==0)  
  28.             printf("No\n");   
  29.     }  
  30.     return 0;  
  31. }  

遞迴演算法首先要明確演算法的結束標誌,在這個程式碼中,如果是迴文數,結束標誌是(a==b||(a+1==b&&str[a+1]==str[b])),就是當判斷到了最後一組數了,應當結束,通常遞迴中使用if語句來作為判斷語句。

特別的,在這個演算法中,不斷傳的是陣列,變換的是下標,也可以直接直接變換陣列,return huiwen(str++,a,b,),此時實參直接從str1開始傳給形參。