在C#中以递归方式检索数组中的最大数字?

时间:2010-12-13 18:50:36

标签: c# recursion

如何在C#中以递归方式检索数组中的最大数字?

3 个答案:

答案 0 :(得分:8)

现在你可能认为我们的意思是没有给你答案 - 而且我承认我已经写下了答案,我的一部分甚至想要给你。

编程就是要自己找到问题的解决方案。当你被聘为程序员时,你可能还有其他人可以依靠,但他们都有自己的问题,你需要能够减轻自己的负担。

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

  1. 您在寻找什么
  2. 到目前为止你找到了什么
  3. '你在找什么'是终止条件。一旦你找到了,所有工作都可以停止,你就可以回家了。

    “你到目前为止发现了什么”是你如何知道你已经检查了什么,所以你不要翻新旧地。

    那么为了在递归中找到数组中的最高值,您需要知道什么?

    1. 数组的内容。
    2. 到目前为止你找到的最高数字。
    3. 您是否已经查看了Array的这一部分? (为什么要再看一遍?)
    4. 这将产生一个类似于:

      的方法签名
      public int GetHighestNumber(int[] array, int highestNumberFound, int lastIndexChecked);
      

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

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

      6. 我意识到这听起来很陈腐,但是在你自己的上学习这些东西会让你成为更好的程序员。

        如果你想成为一名专业程序员,你必须自己学习这些东西。

        如果你不想成为一名专业程序员,那就放弃课程,做自己喜欢的事情。

答案 1 :(得分:4)

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

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

想一想:

  • 开始条件
  • 终止条件
  • 如何以递归方式移动数组

答案 2 :(得分:0)

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