Recursion 一个布尔递归函数,用于判断一个数字在整数中出现的次数是否为偶数

Recursion 一个布尔递归函数,用于判断一个数字在整数中出现的次数是否为偶数,recursion,Recursion,该函数获取一个整数和一个数字,并应返回true 如果数字在整数中出现偶数次,则为false 例如: 如果digit=1和num=1125 该函数应返回true 如果digit=1和num=1234 函数应返回false bool isEven(int num, int dig) { bool even; if (num < 10) even = false; else { even = isEven(num/10,dig);

该函数获取一个整数和一个数字,并应返回true 如果数字在整数中出现偶数次,则为false

例如:

如果
digit=1
num=1125
该函数应返回
true

如果
digit=1
num=1234
函数应返回
false

bool isEven(int num, int dig)
{
    bool even;

    if (num < 10)
        even = false;
    else
    {
        even = isEven(num/10,dig);
bool-isEven(int-num,int-dig)
{
布尔甚至;
如果(数值<10)
偶数=假;
其他的
{
偶数=isEven(num/10,dig);
这就是我到目前为止得到的,我被卡住了。。。
这是家庭作业,请不要写答案,而是提示我并帮助我自己去做。

要设置递归,你需要找出两件事:

  • 基本情况。您可以直接处理的简单情况是什么?例如,您可以轻松处理单个数字吗
  • 将所有其他情况简化为基本情况的规则。例如,您能否切掉最后一位数字,并以某种方式将剩余部分数字的解决方案转换为完整数字的解决方案

  • 我可以从您的代码中看出,您在这两个方面都取得了一些进展。但是,这两个方面都是不完整的。首先,您在代码中从未使用目标数字。

    表达式num%10将为您提供数字的最后一个数字,这应该会有所帮助


    您的基本大小写不正确,因为一个数字可以有偶数个匹配项(零是偶数)。您的递归大小写也需要工作,因为您需要反转每个匹配项的答案。

    叹气…无法正确编辑代码。0不是有效输入,因为整数必须是自然数(我们从自然中排除了0)你不明白。我指的是零作为可能的匹配数,而不是输入。例如:num=1234,dig=5。dig出现零次,这是偶数。我不明白我是否应该计算出现的次数,并最终确定它是否为偶数,或者让布尔变量在每次函数我认识到数字化的工作方式。做你认为更容易正确的事情。