【问题标题】:Recursive Functions help on displaying reverse numbers递归函数有助于显示反向数字
【发布时间】:2018-04-17 07:17:30
【问题描述】:

这是整个问题:

编写并测试两个递归函数 void reverseDisplay1(int value)void reverseDisplay2(int value) 实现以下 定义:

A:“要显示数字的倒数,请显示最后一位 后跟相反顺序的其他数字”,

B : “要显示数字的倒数,显示在第一位 在第二个和所有后续数字的倒数之后。”

我主要想知道 b) 想说什么。我了解 a) 试图说如果我运行以下reverseDisplay1(123),我将得到321。让我知道我是否错了,以及 b) 试图让我做什么。

【问题讨论】:

  • 在您的问题文本中真的"...显示在第一位..." 吗?我的意思是,完全正确,逐字逐句?
  • 你应该得到相同的结果,他们只是要求两个不同的递归实现。
  • @WhozCraig 是的,整个报价都是逐字记录的。
  • @Red 哇。看看您是否可以通过修复教师的语法获得额外的学分。这太可怕了。无论如何,我同意miradulo。每个问题的第一个子句都是相同的,因此输出将是相同的。我怀疑其中一个(第一个)只转储数字,而另一个构建一个实际的int,这将是输入的反向数字表示。在您的情况下,将生成实际数字 321,然后简单地打印。不过,老实说,很难遵循该指示,所以无论如何我都会要求教练进行澄清。
  • @WhozCraig Nah 不幸的是,他们没有做额外的功劳。我认为第一个它希望我将 321 作为 int 打印,第二个打印 231 或 213 甚至 132,无论正确的方法是什么。感谢您的洞察力。

标签: c++ function recursion


【解决方案1】:

这是做同一件事的两种不同方式。第一种方法是打印最后一个数字,然后递归地打印数字的其余部分(反向)。第二种方法是递归打印除第一个数字之外的数字(同样,反向),然后将第一个数字添加到末尾。

【讨论】:

    【解决方案2】:

    它们的意思是一样的:从 12345 反转到 54321。 区别在于实现需求的方式/算法。

    • A:“要显示数字的倒数,

      1. 显示最后一位后跟
      2. 其他数字倒序”,
    • B : “显示数字的倒数,

      1. 显示在第一位之后
      2. 倒数第二个和所有后续数字。”

    所以:

    fA:
        lastDigit = ...
        otherDigitsNum = ...
        restReversed = fA(...);
        display ...
    
    fB:
        firstDigit = ...
        otherDigitsNum = ...
        restReversed = fB(...);
        display ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-11
      • 1970-01-01
      • 2010-11-28
      • 2020-09-26
      • 2011-06-21
      • 1970-01-01
      相关资源
      最近更新 更多