1

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

例如:

如果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);

这是我到目前为止所得到的,我被困住了......这是家庭作业,所以请不要写答案,而是提示我并帮助我自己完成。

4

2 回答 2

1

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

  1. 基本情况。您可以直接处理的简单案例有哪些?例如,你能轻松处理个位数的数字吗?
  2. 将所有其他情况减少到基本情况的规则。例如,你能砍掉最后一位数,然后以某种方式将剩余部分数的解转换为完整数的解吗?

我可以从您的代码中看到您在这两点上都取得了一些进展。然而,两者都不完整。一方面,您永远不会在代码中使用目标数字。

于 2012-11-26T22:13:33.810 回答
1

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

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

于 2012-11-26T22:15:37.990 回答