一个布尔递归函数,用于判断一个数字是不是在整数中出现偶数次
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=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);
这是我到目前为止所得到的,我被困住了...... 这是作业,所以请不要写答案,而是提示我并帮助我自己完成。
【问题讨论】:
sigh...无法弄清楚如何正确编辑代码 【参考方案1】:要设置递归,你需要弄清楚两件事:
-
基本案例。您可以直接处理的简单案例有哪些?例如,您能否轻松处理一位数?
将所有其他情况减少到基本情况的规则。例如,你能砍掉最后一位数字,并以某种方式将剩余部分数的解转换为完整数的解吗?
我可以从您的代码中看到您在这两点上都取得了一些进展。然而,两者都不完整。一方面,您永远不会在代码中使用目标数字。
【讨论】:
我不明白我是否应该计算出现次数并最终决定它是否是偶数,或者每次函数识别数字时让布尔变量改变它的值 任何一种方式都可以工作。做任何你认为更容易做对的事情。【参考方案2】:表达式 num%10 将为您提供数字的最后一位,这应该会有所帮助。
您的基本情况不正确,因为单个数字可以有偶数个匹配项(零是偶数)。您的递归案例也需要工作,因为您需要反转每个匹配项的答案。
【讨论】:
0 不是有效输入,因为整数必须是自然数(我们从自然数中排除 0) 你不明白。我指的是零作为潜在的匹配数量,而不是输入。例如:num=1234,dig=5。 Dig 出现 0 次,是偶数。以上是关于一个布尔递归函数,用于判断一个数字是不是在整数中出现偶数次的主要内容,如果未能解决你的问题,请参考以下文章