我试图创建一个递归函数,查找数组中低整数和高整数之间的最大数字。
我尝试了这个函数,它可以帮助递归地查找数组中的最大元素。我只是不知道如何向函数中添加一个低整数和一个高整数,以找到这两个整数之间的最大值。
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.
}
更新: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