回文字符串判断---递归实现

所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的。比如"level" 、 “aaabbaaa”

题目:判断一个字符串是否为回文

解法:递归

递归的作用在于把问题的规模不断缩少,直到问题缩少到能简单地解决

问:如何缩少问题规模?

答:通过观察可以知道,一个回文字符串其中内部也是回文。所以,我们只需要以去掉两端的字符的形式一层层检查,每一次的检查都去掉了两个字符,这样就达到了缩少问题规模的目的。

新问题与原问题有着相同的形式

当去掉两端字符后的字符串,其产生的新问题同样是检查这个字符串是否回文。

递归的结束需要简单情景

1. 字符串长度可能会奇数或偶数:

  • 如果字符串长度是奇数,字符串会剩下最中间那位字符,但其不影响回文。当检查到长度为1的时候即代表此字符串是回文
  • 如果字符串长度是偶数,当两端的字符串两两比较检查后不会剩下字符。即检查到长度为0的时候即代表此字符串是回文

2. 如果检查到两端两个字符不相同。则说明此字符串不是回文,直接返回0,不需要继续检查

 1 #include <iostream> 
 2 #include <string>
 3 
 4 using namespace std;
 5 int strhui(int low,int high,string str,int length);
 6 
 7 int main()
 8 {         
 9     string str;        
10     cout<<"please int a string."<<endl;        
11     cin>>str;         
12     int length = str.length();         
13     int result;         
14     if(result == 1)                 
15         cout<<"yes!"<<endl;        
16     else                 
17         cout<<"NO"<<endl;        
18     return 0; 
19 }
20 
21 int strhui(int low,int high,string str,int length) 
24 {         
25     if((length == 1) || (length ==0 ))         
26     {                 
27         return 1;        
28     }        
29     if(str[low] != str[high])               
30         return 0;        
31     return strhui(low+1,high-1,str,length-2);
32 }

程序二:

 1 #include <stdio.h>
 2 #include <string.h>
 3 
 4 void huiwen(char str[])
 5 {
 6     int i,len;
 7     bool flag = true;
 8     len=strlen(str);
 9     for(i=0;i<len/2;i++)
10     {
11         if(str[i]!=str[len-i-1])
12         {
13             flag=false;
14             break;
15         }
16     }
17     if(flag == false)
18         printf("%s 不是一个回文数
",str);
19     else
20         printf("%s 是一个回文数
",str);
21 }
22 
23 void main()
24 {   
25     char str[100] = {0};     
26     printf("Input a string:");/*提示Input a string:*/
27     scanf("%s", str);      /*scanf()函数输入一个字符串:*/
28     huiwen(str);
29     getchar();
30 }

原文链接:http://blog.csdn.net/cbs612537/article/details/8217425

原文地址:https://www.cnblogs.com/followyourdream/p/3291035.html