代码没有正确输出

标签 c recursion palindrome

我在我的代码中找不到问题,它只打印按任意键继续任何其他操作。由于显示的输出,我似乎没有弄清楚程序的流程。 感谢帮助。

#include<stdio.h>
#include<stdlib.h>

int fcheck(char *name, int i, int j)
{
    if (i > j)
        return 1;

    if (name[i] != name[j])
        return 0;
    else
        fcheck(name, i++, j--);

    return 1;
}                               // close fcheck

int main()
{
    int c;

    char name[] = "mom";

    int i = 0, j = 2;

    c = fcheck(name, i, j);

    if (c == 1)
        printf("Palindrome");
    else
        printf("Not a Palindrome");

    return 0;
}                               // close main

最佳答案

fcheck(name,i++,j--);

仅在调用fcheck 后更改ij 的值。这意味着您会得到一个重复的 fcheck(name,0,2) 调用堆栈,它只会在您的堆栈溢出时终止。

这里如果要使用递归,需要使用预自增/自减

return fcheck(name,++i,--j);

请注意,我还在此处添加了一个return。如果没有这个,任何第一个和最后一个字符匹配的字符串都将被报告为回文。

关于代码没有正确输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20406308/

相关文章:

javascript - 带缓存的递归求解最长回文子序列的大O分析

c - fork 函数流程图,有效和无效输出

prolog - 将 Prolog 仿函数转换为具有差异列表的仿函数

c - 如何将输出音频传输到 gstreamer 脚本?

java - 如何递归删除

java - 方法的递归实现

java - 链表,向后递归

java - 如何优化我编写的以下java代码来生成下一个回文数

c - MPi 多重广播 BIGNUM

c - 构建时删除并写入闪存会出错