【问题标题】:I have two lists that represents long numbers and i need to find a recursively way to answer which number is bigger我有两个代表长数字的列表,我需要找到一种递归方式来回答哪个数字更大
【发布时间】:2021-01-19 17:41:16
【问题描述】:

我有两个列表,每个列表代表一个 long 类型的数字。 每个列表中的每个数字都向后保存。含义:(123保存321) 我正在尝试找到一种方法,通过在每个列表上只进行一次来找到哪个列表的数量最多。 我需要递归地做,我更喜欢抽象的想法而不是直接的答案。

【问题讨论】:

  • 你的问题太混乱了。尝试解决这个问题。 “列表代表一个长数字”到底是什么意思?您不是说数字列表(长)吗? '数字在每个列表中向后保存' - 意味着您在列表末尾插入数字? “哪个数字更大...”表示哪个列表的最大数字更大?
  • 是的,先生,我已经编辑了我的问题。
  • @yardentamam 我想你的意思是说123 被保存为[3, 2, 1],对吧? List 的数字倒序。

标签: java list


【解决方案1】:

你用这个签名实现了一个方法:

int compare(List<Integer> num1, List<Integer> num2, int index)

其中num1num2 是您的两个倒序数字列表,index 是要比较的列表的索引。

您递归直到index 到达最长列表的末尾,然后您像其他compare 方法一样比较并返回一个值(0, ==0)。如果列表长度不同,并且index 超出其中一个列表的末尾,请使用0 值作为该列表缺失的数字。

返回时,递归调用者会检查值,如果返回值为0,则比较数字,否则只返回返回值不变。

【讨论】:

  • 我没有完全理解。我如何使用索引以及究竟是为了什么。我试图弄清楚如果最大数字大于另一个数字如何停止,如果不继续比较。谢谢你的帮助。
  • @lanz 阅读最后一段。如果返回值不是0,则原样返回,即停止比较。 --- 如果不使用索引,您将如何跟踪递归中的位置? subList()?太耗费资源了,当一个简单的索引就可以了。
  • 我无法理解如何停止比较?
  • @lanz 我已经解释过了,但也许第三次会这样做:当递归调用返回非零值时,立即返回,即不比较前面的数字,即 stop检测到差异后进行比较
猜你喜欢
  • 1970-01-01
  • 2021-06-17
  • 1970-01-01
  • 1970-01-01
  • 2021-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多