You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++递归实现回文字符串判断代码失效问题求助

递归回文判断代码错误排查

你提交的代码存在3处会直接导致运行逻辑错误的问题:

  • 递归终止条件位置错误:判断指针相遇/相邻、返回匹配成功的逻辑写在了return 0分支之后,属于永远无法执行到的死代码,递归没有正确的出口,永远不会返回匹配成功的结果。
  • 递归调用语法错误:return(s, f +1, l-1); 缺失递归调用的函数名,实际是逗号表达式运算,只会返回表达式最后一个参数的数值,完全没有实现递归调用子问题的逻辑,正确写法应为return p(s, f+1, l-1);。
  • 边界判断逻辑错误:终止条件中f-l == 1的计算逻辑写反,递归过程中左指针f递增、右指针l递减,两指针相邻时应为l - f == 1,原判断条件永远无法触发。

修正后的可运行代码如下:

#include <bits/stdc++.h>
using namespace std;

int p(string &s, int f, int l){
    // 递归终止边界:指针重合或相邻,说明所有前置字符均匹配,判定为回文
    if(f >= l || l - f == 1){
        return 1;
    }
    // 首尾字符不匹配,直接判定非回文
    if(s[f] != s[l]){
        return 0;
    }
    // 首尾字符匹配,收缩指针递归判断内层子串
    return p(s, f + 1, l - 1);       
}

int main(){
    string s;
    cin >> s;
    int f = 0;
    int l = s.length() - 1;
    cout << (p(s, f, l) ? "YA" : "BUKAN") << endl;
    return 0;
}

修正逻辑说明:递归函数必须优先判定终止边界,避免数组越界访问;匹配逻辑按从外到内的顺序逐对比较字符,任意一对不匹配就提前返回失败,全部匹配完成后返回成功。

内容的提问来源于stack exchange,提问作者Orla Black

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 08:54:21