C++,写了个判断回文字符串的递归函数,不知道错在哪儿
bool Palin(string t){
int i = t.size() - 1;
if(i + 1 == 1)
return true;
else
{
if(t != t)
return false;
else
{
if(i - 1 == 0 || i - 1 == 1)
return true;
else
{
t.erase(0, 1);t.erase(i, i+1);
return Palin(t);
}
}
}
}
求大哥指点一下 #include <iostream>
#include <iomanip>
#include <string>
bool palindrome(std::string str){
if(str.size() <= 1){
return true;
}
else if(str.front() != str.back()){
return false;
}
str.erase(str.size()-1, 1);
str.erase(0, 1);
return palindrome(str);
}
int main()
{
std::string A = "abcdcba";
std::string B = "abcdefg";
std::cout
<< "A is palindrome: "
<< std::boolalpha
<< palindrome(A)
<< std::endl
<< "B is palindrome: "
<< std::boolalpha
<< palindrome(B)
<< std::endl;
return 0;
}A is palindrome: true
B is palindrome: false #include <stdio.h>
#include <stdlib.h>
#include <string.h>
int palin(char *str)
{
int len = strlen(str);
if (len==1 || len==0) // 条件1, 结束条件
{
return 1;
}
else
{
if(str!=str)
{
return 0;
}
else
{
str='\0'; // 置最后一位为字符串结束位。
return palin(++str); // 条件2,调用函数自身(str起始位移至下一位)
}
}
}
int main(void)
{
char str[]="abccba";
int b = palin(str);
printf("%d\n", b);
} 草搞懂了,16行应该是t.erase(i, i+1);t.erase(0, 1);,我顺序搞错了
页:
[1]