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

递归函数在2个整数之间查找最大值

高增
2023-03-14

我试图创建一个递归函数,查找数组中低整数和高整数之间的最大数字。

我尝试了这个函数,它可以帮助递归地查找数组中的最大元素。我只是不知道如何向函数中添加一个低整数和一个高整数,以找到这两个整数之间的最大值。

int findMaxRec(int A[], int n) 
{ 
    // if n = 0 means whole array has been traversed 
    if (n == 1) 
        return A[0]; 
    return max(A[n-1], findMaxRec(A, n-1)); 
} 

目标是有一个看起来像这样的函数:

int findMaxBetwen(int A[], int low, int high){
      //Here is where I need help integrating if lets say the array is A[] = 5,6,7,8
      // Call findMaxBetwen(A[], 5, 8) and the output gives 7 because that is the max between the 3 
      //integers.
}

共有1个答案

唐俊爽
2023-03-14

更新:C 17现在定义了一个可以返回数组大小的函数std::size。

#include <iostream>
#include <iterator>

using namespace std;

int findMaxRec(const int[] A, const int &n)
{
  if (n <= 0) throw "error: array is empty...";
  if (n == 1) return A[0];
  return std::max(A[n - 1], findMaxRec(A, (n - 1)));
}

int findMaxRec(const int[] A)
{
  return findMaxRec(A, std::size(A));
}

const int& findMaxRec(const int &i)
{
  return i;
}

如果你没有C 17,你会考虑使用列表吗?

#include <algorithm>
#include <list>

int findMaxRec(const std::list<int> &L)
{
  if (L.size() == 0) throw "error: list is empty...";
  return (*std::max_element(L.begin(), L.end()));
}

findMaxBetwen可以实现为函数模板:

template<typename T> int findMaxBetwen(const T &data, int low, int high)
{
  int i = findMaxRec(data);
  if (i <= low) return low;
  if (i >= high) return high;
  return i;
}

//....

int main(int argc, char** argv)
{
  std::list<int> a = {5, 6, 7, 8, 10};
  cout << findMaxBetween(a, 5, 8) << '\n'; // output is 8

  int b[5] = {5, 6, 7, 8, 10};
  cout << findMaxBetween(b, 5, 8) << '\n'; // output is 8

  int c = 7;
  cout << findMaxBetween(c, 5, 8) << '\n'; // output is 7
}

了解有关函数模板的更多信息

 类似资料:
  • 问题内容: 对于需要解决的问题之一,我使用for循环找到了数组的最大值,因此我尝试使用递归找到它,这就是我想出的: 因此它可以正常工作并获取最大值,但是我的问题是:对于基本情况,返回a [head]以及对于在开头处的值大于最后一个值的情况,可以吗? 问题答案: 您只需一个计数器即可轻松完成此操作,只需使用您这次想要比较的值的索引即可: 这样可以更好地显示正在发生的情况,并使用默认的“递归”布局,例

  • 问题内容: 可以说我有下表 基本上,要求是将所有经理拉到您要搜索的user_id下。因此,例如,如果我发送“ Linda”,则它应该返回我: 或者,如果我发送“ Mark”,那么它应该返回我: 我听说过递归函数,但不确定如何执行。任何帮助,将不胜感激。 问题答案: 使用: 结果集: 脚本:

  • 我想找出一种方法,从整数中找出整数的最大和。 在这种情况下,输入总是整数的数组,任务是使用数字(每个数字只能使用一次)计算最大可能的和。 以下是我到目前为止提出的方法,但我不知道如何用一种方法来完成这一切。 有了这个输入:程序应该打印出。

  • 我不明白为什么我会得到这个最大深度错误。iam试图使用bst递归方法在数组中查找数字索引,下面是我的代码 任何人都可以告诉我代码块中发生了什么 错误块: PS C:\Users\admin\Desktop\DSA

  • 问题内容: 我使用以下代码解决了Euler项目的问题10,该代码通过强力工作: 这三个功能的工作方式如下: isPrime 检查数字是否为质数; primeList 返回一个列表,其中包含一组在一定范围内且限制为“ n”的素数,并且; sumPrimes 对列表中所有数字的值求和。(不需要最后一个功能,但是我喜欢它的清晰度,特别是对于像我这样的初学者。) 然后,我编写了一个新函数 primeLis