C語言遞迴的應用之迴文字元
阿新 • • 發佈:2019-01-27
遞迴應用之迴文字元的判別:
有一種特殊形式的字串,其正反序相同,被稱為“迴文字串”。例如LeveL就是一個迴文字串。
輸入:
字串
輸出:
Yes或者No
說明:
如輸出Yes,說明輸入的字串是一個迴文字串
輸出No,說明輸入的字串不是一個迴文字串
請使用遞迴演算法實現。
- #include<stdio.h>
- #include<string.h>
- int huiwen(char str[],int a,int b )
- {
-
if
- return 0;
- }
- elseif(a==b||(a+1==b&&str[a+1]==str[b])) {
- return 1;
- }
- elseif(str[a]==str[b]) {
- return huiwen(str,a+1,b-1);
- }
- }
- int main()
- {
- char str[800];
- int t,p;
- gets(str);
-
t=strlen(str);
- if(t==0)
- printf("Yes\n");
- else {
- p=huiwen(str,0,t-1);
- if(p==1)
- printf("Yes\n");
- elseif(p==0)
- printf("No\n");
- }
- return 0;
- }
遞迴演算法首先要明確演算法的結束標誌,在這個程式碼中,如果是迴文數,結束標誌是(a==b||(a+1==b&&str[a+1]==str[b])),就是當判斷到了最後一組數了,應當結束,通常遞迴中使用if語句來作為判斷語句。
特別的,在這個演算法中,不斷傳的是陣列,變換的是下標,也可以直接直接變換陣列,return huiwen(str++,a,b,),此時實參直接從str1開始傳給形參。