首页 文章资讯内容详情

在C++中检查字符串是否为回文的递归函数

2026-06-02 1 花语

我们得到一个字符串Str作为输入。目标是使用递归函数查找输入字符串是否为回文词。回文字符串是从前端或后端读取时形成相同单词的那些字符串。长度为0的字符串被认为是回文。反转回文字符明智的形式,与原始字符串相同。

回文的例子有:-女士、abcba、马拉雅拉姆语等

例子

输入 -Str=“马拉雅拉姆语”

输出 -输入字符串是回文。

说明 -

Str[0到8]=马拉雅拉姆语

反向Str[8到0]=马拉雅拉姆语

两个字符串相同。

输入 -Str=“教程”

输出 -输入字符串不是回文。

说明-

Str[0到7]=教程

反向Str[7到0]=lairotut

两个字符串不一样

下面程序中使用的方法如下

在这种方法中,我们将检查字符串是否包含单个字符,如果为真,则它是回文。如果不是,则递归遍历整个字符串以获取剩余字符,如果对应字符不同,则中断递归。

取输入字符串Str[]并计算其长度。

如果长度为0,则设置result=1。

否则设置result=checkPalindrome(Str,0,length-1)其中0是第一个索引,lenght-1是最后一个索引

如果任何字符与其在字符串中的对应字符不匹配,则函数checkPalindrome(charstr[],intfirst,intlast)返回0。

如果第一个和最后一个索引相同,则字符串有一个字符,则返回1。

如果不是,则通过first++,last--和recursivecall检查除结束字符之外的其余字符checkPalindrome(str,first,last)。

在所有递归结束时,我们将得到一个结果。

如果它是1则输入字符串是回文。

否则输入字符串不是回文。

在main中打印结果。

示例

#include <bits/stdc++.h> using namespace std; int checkPalindrome(char str[], int first, int last){ if (first < last + 1){ first++; last--; return checkPalindrome(str, first, last); } if (first == last){ return 1; } if (str[first] != str[last]){ return 0; } return 1; } //驱动程序代码 int main(){ char Str[] = "madam"; int result; int length = strlen(Str); if (length == 0){ result=1; } else{ result=checkPalindrome(Str, 0, length - 1); } if (result==1){ cout << "输入字符串是回文。"; } else{ cout << "输入字符串不是回文。"; } return 0; }输出结果

如果我们运行上面的代码,它将生成以下输出

输入字符串是回文。