我正在尝试使用 C 语言执行递归函数来检查一个单词是否是回文(以两种方式读取)。
这是我第一次使用这种功能,但是我遇到了一个问题,我不知道为什么它不起作用,如果你能帮助我,这是我的代码,谢谢:
#include <stdio.h>
#include <string.h>
int palindrome(char c[100],int i, int j)
{
if (j == i)
{
return 1;
}
// Si le premier et le dernier caractère
// sont les mêmes alors, on peut commencer les tests
if(c[i] == c[j])
{
// On fais les tests pour chaque caractère de la chaine
return palindrome(c, i++, j--);
} else {
return 0;
}
return 0;
}
int main(void)
{
char chaine[100] = "radar";
int pal;
pal = palindrome(chaine, 0, strlen(chaine)); // Returns : 0 -> False / 1 -> True
printf("%d", pal);
return 0;
}
最佳答案
问题是您将 j 值传递为 strlen(chaine) 而不是 strlen(chaine) - 1。
#include <stdio.h>
#include <string.h>
int palindrome(char c[100],int i, int j) {
if (j == i)
return 1;
else if(c[i] == c[j])
return palindrome(c, ++i, --j);
else
return 0;
}
int main() {
char chaine[100] = "radar";
int pal;
pal = palindrome(chaine, 0, strlen(chaine) -1 ); // Returns : 0 -> False / 1 -> True
printf("%d", pal);
return 0;
}
关于C 递归函数回文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46558406/