2010-12-13 54 views
1

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

+6

这功课呢? – BrokenGlass 2010-12-13 18:52:28

+0

有什么问题?创建一个通过数组递归循环的函数,并创建一个最大值变量。如果阵列中当前位置的当前值大于当前最大值,则最大值=当前元素。那样容易。 – Lockhead 2010-12-13 18:53:10

+1

如果您想要相关答案,需要更多信息。 – Tipx 2010-12-13 18:53:13

回答

4

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

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

想想:

  • 启动条件
  • 终止条件
  • 你如何通过阵列移动递归地
0

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

8

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

编程是所有关于自己寻找问题的解决方案。当你被聘为程序员时,你可能有其他人依赖,但他们都有自己的问题,你需要能够自己承担重量。

递归(在过于简单的答案中)意味着反复调用相同的操作,直到产生结果。这意味着你在每一个递归操作需要,你需要知道(至少)两两件事:

  1. 你正在寻找
  2. 什么你至今

发现什么'你要找的是终止条件。一旦你发现,所有的工作可以停下来,你可以回家。

'你到目前为止发现的'是你如何知道你检查了什么,所以你不会翻新旧地。

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

  1. 数组的内容。
  2. 迄今为止找到的最高数字。
  3. 你已经看过这部分数组了吗? (为什么要通过它再看看?)

这将产生一个方法签名,看起来像:

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

一旦你的数组里面,你必须做到以下几点:

  1. 迭代通过数组
  2. 停止,当你发现一个值,该值比highestNumberFound
  3. 更高请再次拨打GetHighestNumber,并更新新的highestNumberFoundlastIndexChecked
  4. 当没有更高的数字时,则返回找到的最高数字。

我知道这听起来很老套,但学习这些东西对自己会让你成为一个更好的程序员。

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

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