布尔递归函数返回错误的值

时间:2014-12-10 16:35:21

标签: c++ recursion

这是一个递归函数,我发现如果一个数字中的给定数字是递减顺序,我确定我的基数是正确的,因为我看到函数确实为前几位数返回false,但是因为最后两个按递减顺序,函数最后返回true。

我无法弄清楚如何保留该假值并将其返回到函数的原始调用。

#include<iostream>
using namespace std;
bool dec(int n);

void main()
{
    cout << dec(1231);
}

bool dec(int n)
{
    bool res;

    if (n < 10)
        return true;
    else
    {
        res = dec(n / 10);
        if ((n / 10) % 10 > n % 10)
            return true;
        else
            return false;
    }
}

1 个答案:

答案 0 :(得分:1)

return true如果res也是如此,那么您应该return (res && (n / 10) % 10 > n % 10); 。尝试

{{1}}