【发布时间】:2018-03-10 20:38:10
【问题描述】:
给定一个未排序的数组,找出最大值和最小值。我试图以递归、分而治之的方式做到这一点,但我不断收到堆栈溢出错误。我进行了调试,并且在递归调用中不断收到错误,但不知道出了什么问题或如何修复它。
我确实有静态最小和最大变量。
感谢您的信息和帮助!
static void findMaxMin(int[] array, int start, int end)
{
if (end == 2)
{
setMaxMin(array);
}
else
{
int mid = ((end) / 2);
findMaxMin(array, start, mid);
findMaxMin(array, mid + 1, end);
}
}
private static void setMaxMin(int[] array)
{
if (array[0] > array[1])
{
max = array[0];
min = array[1];
}
else
{
min = array[0];
max = array[1];
}
}
【问题讨论】:
-
似乎你错过了退出点,你需要告诉代码什么时候应该停止。例如开始 >= 结束。
-
我怀疑你的递归基本条件。
-
好吧,
setMaxMin只查看前两个索引,所以如果数组更长,这将如何工作, -
使用队列移除递归。
-
你为什么要为此使用递归?循环遍历数组并将当前值与前一个值进行比较是一件简单的事情。不需要递归。
标签: c# recursion divide-and-conquer