【问题标题】:What does "main method" and "helper method" in a recursion mean?递归中的“主要方法”和“辅助方法”是什么意思?
【发布时间】:2020-06-06 07:26:26
【问题描述】:

我得到了这个任务:

private int hex2Dec(String string) // helper method
private int hex2Dec(String string, int low, int high) // main method

这意味着递归方法应该是这样的:

private int hex2Dec(String string, int low, int high) {
    ... some code ....
    hex2Dec(string);
}

private int hex2Dec(String string)

或者这意味着递归方法应该是这样的:

private int hex2Dec(String string) {
    ... some code ....
    hex2Dec(string, 0, string.length()-1);
}

private int hex2Dec(String string, int low, int high) 

递归中的“main method”和“helper method”是什么意思?

在 Daniel Liang 的《Java 编程和数据结构简介》第 11 版全球版第 751 页(第 18 章)中,他将辅助方法描述为接收附加参数的第二种方法。

但在这个任务中,它是一个参数较少的任务,称为“辅助方法”。这让我很困惑。

【问题讨论】:

标签: recursion


【解决方案1】:

这些不是特定于递归的术语。

但在这种情况下,“main 函数”很可能是他们期望实际递归发生的地方。

递归函数经常使用辅助函数来简化初始调用。通常,就像这里的情况一样,递归调用需要额外的信息(如lowhigh)才能运行,但您不希望用户需要担心自己传入起始值。让辅助函数使用额外参数的初始值调用递归函数是很常见的。

所以在这种情况下,他们可能希望助手调用具有lowhigh 值的递归函数,然后用户可以调用更简单的助手而不是递归函数。

【讨论】:

  • 这正是令人困惑的地方:在 Daniel Liang 的《Java 编程和数据结构简介》第 11 版全球版第 751 页(第 18 章)中,他将辅助方法描述为第二种方法,它接收额外的参数。但在这篇文章中,他将参数较少的方法描述为辅助方法。
  • @Coder88 当然也可以将递归函数视为助手。要点是复杂的递归函数,为了简洁和易用,经常使用辅助函数来卸载一些工作。您认为哪个功能是帮助者取决于视角以及每个功能到底在做什么。如果他们希望在这种情况下将更简单的函数视为辅助函数,那就去吧。
  • @Coder88 如果他明确声明助手是接受更多参数的人,然后在代码中与之相矛盾,那可能只是一个错字。
猜你喜欢
  • 1970-01-01
  • 2014-05-03
  • 1970-01-01
  • 2012-12-09
  • 1970-01-01
  • 2013-03-29
  • 2013-01-30
  • 2016-10-17
  • 2023-03-21
相关资源
最近更新 更多