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

Posted

技术标签:

【中文标题】一个布尔递归函数,用于判断一个数字是不是在整数中出现偶数次【英文标题】:A Boolean recursive function to tell if a digit appears in an integer an even number of times一个布尔递归函数,用于判断一个数字是否在整数中出现偶数次 【发布时间】:2012-11-14 11:13:19 【问题描述】:

函数获取一个整数和一个数字,并且应该返回 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);

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

【问题讨论】:

sigh...无法弄清楚如何正确编辑代码 【参考方案1】:

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

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

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

【讨论】:

我不明白我是否应该计算出现次数并最终决定它是否是偶数,或者每次函数识别数字时让布尔变量改变它的值 任何一种方式都可以工作。做任何你认为更容易做对的事情。【参考方案2】:

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

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

【讨论】:

0 不是有效输入,因为整数必须是自然数(我们从自然数中排除 0) 你不明白。我指的是零作为潜在的匹配数量,而不是输入。例如:num=1234,dig=5。 Dig 出现 0 次,是偶数。

以上是关于一个布尔递归函数,用于判断一个数字是不是在整数中出现偶数次的主要内容,如果未能解决你的问题,请参考以下文章

js判断是不是是数值

js判断数字整数字符串布尔,特殊方法

在c#中如何实现判断一个数值是不是为整数(或小数)?

在c#中如何实现判断一个数值是不是为整数(或小数) 谢谢

函数不返回正确的布尔值

C语言:编写一个测试一个串是不是为回文的递归函数,是回文,返回1;不是,返回0。