gpt4 book ai didi

c - 简单递归函数的误解

转载 作者:行者123 更新时间:2023-11-30 21:42:27 24 4
gpt4 key购买 nike

此递归函数必须返回 1如果 num 的所有数字之和是偶数,如果总和是奇数 - 返回 0 .

请详细解释一下它的具体作用以及 NOT 运算符在这个特定示例中的工作原理。我还没有看到 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
}
}

最佳答案

任何奇数都可以表示为偶数和奇数之和。两个奇数之和始终是偶数。

这利用了这一原则。在最后一个 block 中,由于 num 的第一位数字 (num%10) 是奇数,因此它基本上反转了 func 的结果。如果返回的值是偶数,则需要添加一个奇数,将其转换为奇数。如果返回的值为奇数,则添加当前数字后,您将得到偶数。因此,这本质上会翻转 func 的输出,因此放置 not 运算符也会执行相同的操作。

关于c - 简单递归函数的误解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51685121/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com