您的位置:首页 > 编程语言 > C语言/C++

C语言递归的应用之回文字符

2015-01-25 18:06 1331 查看
递归应用之回文字符的判别:

  有一种特殊形式的字符串,其正反序相同,被称为“回文字符串”。例如LeveL就是一个回文字符串。

输入:

          字符串

输出:

          Yes或者No

说明:

          如输出Yes,说明输入的字符串是一个回文字符串

          输出No,说明输入的字符串不是一个回文字符串

          请使用递归算法实现。
代码如下:

#include<stdio.h>  

#include<string.h>  

  

  

int huiwen(char str[],int a,int b )  

{  

    if(str[a]!=str[b]) {  

        return 0;  

    }  

    else if(a==b||(a+1==b&&str[a+1]==str[b])) {  

        return 1;  

    }  

    else if(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");  

        else if(p==0)  

            printf("No\n");   

    }  

    return 0;  

}  

递归算法首先要明确算法的结束标志,在这个代码中,如果是回文数,结束标志是(a==b||(a+1==b&&str[a+1]==str[b])),就是当判断到了最后一组数了,应当结束,通常递归中使用if语句来作为判断语句。

特别的,在这个算法中,不断传的是数组,变换的是下标,也可以直接直接变换数组,return huiwen(str++,a,b,),此时实参直接从str1开始传给形参。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 递归 应用
相关文章推荐