问题是这样的:
构建递归函数 bool isEven(int a, int b)
来计算 a
中 b
出现的次数是否为偶数/奇数.
例如:
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/