return true在C ++中返回0

时间:2012-11-14 23:00:48

标签: c++

这是一个简单的递归回文测试,它本身可以工作,但无论函数实际返回什么,都会返回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);
}

3 个答案:

答案 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);