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

时间:2012-11-26 22:06:08

标签: recursion

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

例如:

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

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

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

    if (num < 10)
        even = false;
    else
    {
        even = isEven(num/10,dig);

这是我到目前为止所得到的,我被困住了...... 这是作业,所以请不要写下答案,但要提示我并帮我自己解决。

2 个答案:

答案 0 :(得分:1)

要设置递归,您需要弄清楚两件事:

  1. 基本情况。您可以直接处理的简单案例是什么?例如,您可以轻松处理一位数字吗?
  2. 将所有其他情况减少到基本情况的规则。例如,您是否可以删除最后一位数字,并以某种方式将重新生成的部分数字的解决方案转换为解决方案全数?
  3. 我可以从您的代码中看到,您已经在这两点上取得了一些进展。但是,两者都不完整。首先,您永远不会在代码中使用目标数字。

答案 1 :(得分:1)

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

你的基本情况不正确,因为一个数字可以有偶数匹配(零是偶数)。您的递归案例也需要工作,因为您需要反转每场比赛的答案。