这是一个简单的递归回文测试,它本身可以工作,但无论函数实际返回什么,都会返回0。这是我的代码,我离开了调试cout语句,所以你可以看到它确实有效:
bool pal(int l, int r, char *a)
{
if(l >= r)
{
cout << "returning true" << endl;
return true;
}
if(a[l] != a[r])
{
cout << "returning false" << endl;
return false;
}
pal(l+1, r-1, a);
}
答案 0 :(得分:8)
您的程序具有未定义的行为,因为存在根本不返回的路径。您应该在最后添加return
语句:
return pal(l+1, r-1, a);
答案 1 :(得分:4)
pal(l+1, r-1, a);
调用pal
,但会丢弃结果。它还会导致没有路径返回值的情况(检查警告!)。你想要的是:
return pal(l+1, r-1, a);
答案 2 :(得分:0)
最后你需要一个return语句。因为如果函数没有进入if语句,则没有返回值。
它可能类似
return pal(l+1, r-1, a);