C 递归函数回文

标签 c

我正在尝试使用 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/

相关文章:

C 守护进程 - 释放和删除锁定文件

c++ - 如何调试一个不那么熟悉的庞大代码库?

c - 使用 select 读取和写入同一个套接字(TCP)

c - 此 C 代码如何转换为 MIPS 指令?

c++ - glibc 函数的 GCC、-flto、-fno-builtin 和自定义函数实现

c - 如何在 C 中解析使用逗号运算符的复杂表达式?

c - 使用 gcc 而不是使用 clang 在 for 循环错误中分配结构

c - 合并算法在合并时对两个字符串数组进行排序

c++ - mq_notify 只启动一个线程

c - 将字符串中的数字更改为 int 的函数