坚持建立一个递归函数

时间:2015-12-06 12:21:49

标签: c recursion

问题是这样的: 构建递归函数bool isEven(int a, int b),以确定ba的出现是偶数/奇数。

for example: isEven(9545, 4) returns false isEven(9545, 5) returns true

我想知道这个问题的边缘情况是什么,我想把这个数字反汇编成b的子集,并且如果它是偶数/奇数则递归检查每个子集但是我不得不建立这个程序

非常感谢您的帮助,

更新认真思考但没有太多成功 - 我无法弄清楚边缘情况是什么,递归的背景概念是什么。这就是我到目前为止所做的:

void main() {

    int n, d;

    cin >> n >> d;

    if(isEven(n, d))
        cout << "Yes" << endl;
    else
        cout << "No" << endl;;
}

bool isEven(int n, int d)
{
    int dgtsnum = digitsInNum(n);
    if (dgtsnum == 1)
    {
        return false;
    }
    else
    {
        for (int i = 1; 2 * i < dgtsnum; i++)
            powerset(2 * i, n);
    }
}

int powerset(int i, int j)
{
}

int digitsInNum(int n)
{
    int i = 1;
    int j = 10;
    while (n / ((int)j) >= 1)
    {

        i++;
        j *= 10;
    }
    return i;
}

1 个答案:

答案 0 :(得分:0)

bool isEven(int a, int b){//a, b >= 0 (AND 9 >= b)
    if(a < 10)
        return a != b;
    return (a % 10 == b) ^ isEven(a / 10, b);
}