c - 坚持构建递归函数

标签 c recursion

问题是这样的: 构建递归函数 bool isEven(int a, int b) 来计算 ab 出现的次数是否为偶数/奇数.

例如: isEven(9545, 4) 返回 false isEven(9545, 5) 返回 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;
}

最佳答案

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);
}

关于c - 坚持构建递归函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34117344/

相关文章:

c# - 从列表列表创建树 C#

java - Java 中的递归 Floodfill

c - 如何在 C 中将 char* 转换为 char[]

c - 如何让一个函数返回多个值?

c - 如何将一个结构指向另一个

python - 通过Python中的装饰器计算调用和最大递归深度

c - 不兼容的指针类型在 C 中传递参数?

c - 地址空间溢出

c - ARM 汇编 memcpy 等价物

arrays - 打印 True 或 False