【发布时间】:2019-01-12 02:02:05
【问题描述】:
如果num 的所有数字之和为偶数,则此递归函数必须返回1,如果和为奇数,则返回0。
请详细解释一下它的具体作用以及 NOT 运算符在这个特定示例中的工作原理。我还没有看到递归调用,这让我有点困惑。
int func(int num) {
if (num < 10) {
if (num % 2 == 0) {
return 1;
} else {
return 0;
}
}
if ((num % 10) % 2 == 0) {
//roughly clear, but I'll be glad to receive some opinions about that to be sure
return func(num / 10);
} else {
return !func(num / 10); //this line is not clear for me
}
}
【问题讨论】:
-
尝试在一张纸上运行它并输入几个输入。 (提示:
odd + odd = even、even + even = even、odd + even = odd) -
此功能正常工作。我唯一的问题是,如果我将 NOT 运算符应用于递归调用,它是如何工作的,我标记的最后一个 else 语句中的行对我来说不是很清楚。
-
当返回值为 TRUE 或 FALSE 时,NOT 运算符与函数一起使用,因为它返回一些值所以在你的代码中它总是正确的,我不清楚这种行为
-
这正是我的问题的重点。但是函数的输出总是有效的smh,我尝试了几个输入,每个答案都是正确的。
-
尝试返回 true 或 false 而不是 0 & 1