当前位置: 首页 > 知识库问答 >
问题:

C递归函数,使用高低值查找数组中的最小值

拓拔浩阔
2023-03-14

我正在学习c并编写一个递归函数来查找数组中的最小值。该函数被赋予一个整数数组和两个索引:low和high(low

这是一项家庭作业,我花了几个小时研究如何找到工作。程序返回“线程断点”,我感觉我在正确的轨道上,但可能缺少一些东西。如果有人能给我指出正确的方向,或者给我一个提示,告诉我我做错了什么。谢谢

int minInArray2(int *arr, int low, int high) {
  int size = sizeof(*arr);
  int temp;
  low = arr[0];
  high = sizeof(arr - 1);

  if (size == 0) {
    return arr[0];
  }

  if (low < high) {
    temp = low;
    low = high;
    high = temp;
  }
  return minInArray2(arr, low, high);
}

共有1个答案

周志文
2023-03-14

许多错误。

int size = sizeof(*arr); will give `sizeof(int)` You want `sizeof(arr)`

仍然不需要尺寸。

下一个

low = arr[0];  //    Not Needed because you pass these value from function.
high = sizeof(arr - 1);//

接下来这个

 if (low < high) {
    temp = low;
    low = high;
    high = temp;
  }

根本不需要。您可以在传递时交换变量。如minInArray2(arr、高、低) //注意参数

最后是递归问题

看看这个

int minInArray2(int *arr, int low, int high) {
  if(low>high) //Your case when low greater than high
  {
    return minInArray2(arr,high,low); // Just pass high first and then low
  }

  if(low==high) //Condition to come out of recursion
    return arr[low];
  int temp = minInArray2(arr,low+1,high); //Call function again and again 
//always with incremented low's value at each recursion
  if(arr[low]<temp)  //compare and return the least among 2
    return arr[low];
  else
    return temp;
}
 类似资料:
  • 问题内容: 对于需要解决的问题之一,我使用for循环找到了数组的最大值,因此我尝试使用递归找到它,这就是我想出的: 因此它可以正常工作并获取最大值,但是我的问题是:对于基本情况,返回a [head]以及对于在开头处的值大于最后一个值的情况,可以吗? 问题答案: 您只需一个计数器即可轻松完成此操作,只需使用您这次想要比较的值的索引即可: 这样可以更好地显示正在发生的情况,并使用默认的“递归”布局,例

  • 我正在尝试优化一个函数,给定一个N int数组,它返回一个元素和前一个元素之间的最小差异。显然,该函数仅适用于具有维度的数组 不知道有没有办法避免在main中传递第一个差,而是在递归函数中做所有的事情。我可以用stdio . h/stdlib . h/string . h/math . h作为头文件。非常感谢你的帮助,我希望这能让我对递归函数有更好的理解。

  • 那么我如何使用这个pair类和我的方法来找到最小值和最大值。

  • 问题内容: 我正在尝试在数组中找到数字的最小值,但并非总是能正常工作。这是我写的代码: 有人可以纠正我吗? 问题答案: 不需要外部循环,它只运行一次,并且无论如何您都不会使用。你为什么有它? 对于内部循环,您需要与最小值进行比较。现在,您正在将其与数组中的第一个元素(不一定是最小值)进行比较。 另外,您可以从1开始循环,因为您不需要与自身进行比较(它只分配给)

  • 我试图递归地在二叉树中找到最小值(不是二叉查找树)。让我困惑的是基本情况。如果TreeNode t为空,返回什么?因为我将使用返回的值将其与当前的最小值进行比较(我认为),我相信我返回的内容很重要。

  • 我需要编写一个递归方法,它需要两个并行数组和单词来查找,查找指定的单词并在另一个数组上每次索引匹配时求和值。例如: 如果我说我需要查找单词,它应该在找到索引时对第二个数组上的值求和。在这种情况下,它应该求和,。 如何使我的递归方法使其采用适当的参数并递归地进行计算。我将使用硬编码值。 这是我目前所拥有的。我很确定我的递归方法需要更多参数,但我会看看是否有人能帮助我