【问题标题】:C++ recursion to check if number contains a digit [duplicate]C ++递归检查数字是否包含数字[重复]
【发布时间】: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 函数。
  • 您是否已单步执行您的代码?
  • 调试器的简单使用会告诉你究竟出了什么问题。

标签: c++ recursion


【解决方案1】:

你的条件不对

  void digit(int n, int k)
  {
    if (n < 0)
      n = -1 * n;

    if (n % 10 == k)
    {
      cout << "Yes\n";
      return;
    }
    else if (n / 10 > 0)
       digit(n / 10, k);
    else
      cout << "no" << endl;
 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-04
    • 2015-02-07
    • 2019-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多