【发布时间】:2014-05-20 00:48:04
【问题描述】:
我有一个递归函数,它检查数字 N 是否包含数字 K 并输出“是”或“否”。此版本显示 N=5565 和 K=5 的“是、是、否、是”。
int digit(int n, int k)
{
if (n < 0)
n = -1*n;
if (n/10 > 0) {
digit(n/10, k);
}
if(n % 10 == k) cout<<"yes"<<endl;
else cout<<"no"<<endl;
}
int main()
{
digit(5565, 5);
return 0;
}
我的问题是如何只显示一个“是”或“否”
【问题讨论】:
-
代码不起作用?
-
首先你的代码不会像你想象的那样编译。
-
我已经修复了缩进。也许现在很清楚为什么它不能按您的预期工作?在任何情况下,问题是当调用
digit时,您总是会打印结果,并且即使结果是肯定的,您也会再次调用 digit。您需要将“yes”/“no”输出移出digit函数。 -
您是否已单步执行您的代码?
-
调试器的简单使用会告诉你究竟出了什么问题。