繁体   English   中英

在C#中以递归方式检索数组中的最高编号?

[英]Retrieving the highest number in an array recursively in C#?

如何在C#中递归地检索数组中的最高数字?

现在,您可能会认为我们的意思是不给您答案-我承认我已将答案写下来,我的一部分甚至希望将其提供给您。

编程就是要自己找到问题的解决方案。 当您被聘为程序员时,您可能会依靠其他人,但是他们都有自己的问题,您需要能够自己承担一些责任。

递归(过于简单的回答)是指一遍又一遍地调用相同的操作,直到产生结果。 这意味着您在每个递归操作中都需要知道(至少)两件事:

  1. 你在找什么
  2. 到目前为止您发现了什么

“您要寻找的”是终止条件。 一旦发现,所有工作都将停止,您可以回家。

“到目前为止,您发现的内容”是您如何知道所检查的内容,从而避免重蹈覆辙。

那么,您需要了解什么才能递归地找到数组中的最大值?

  1. 数组的内容。
  2. 您到目前为止找到的最高数字。
  3. 您是否已经看过阵列的这一部分? (为什么要再次浏览?)

这将产生一个方法签名,如下所示:

public int GetHighestNumber(int[] array, int highestNumberFound, int lastIndexChecked);

进入阵列后,必须执行以下操作:

  1. 遍历数组
  2. 当您发现一个高于highestNumberFound的值时停止
  3. 再次调用GetHighestNumber ,并更新新的highestNumberFoundlastIndexChecked
  4. 如果没有“更高”的数字,则返回找到的最高数字。

我知道这听起来有些陈词滥调,但是自己学习这些东西将使您成为一个更好的程序员。

如果您想成为一名专业的程序员,则必须自己学习这些知识。

如果您不想成为专业的程序员,那么请放弃该课程并做自己喜欢的事情。

这只是一个提示(以int[]为例):

public int FindMax(int[] array, int indexSoFar, int maxSoFar)

想一想:

  • 开始条件
  • 终止条件
  • 您如何递归遍历数组

编辑的原因:不想破坏答案。 问候。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM