【发布时间】:2021-10-11 21:49:47
【问题描述】:
int sorted_a(int arr[], int N)
{
if (N == 1 || N == 0)
return 1;
if (arr[N - 1] < arr[N - 2])
{
return 0;
}
return sorted_a(arr, N - 1);
}
int sorted_d(int arr[], int N)
{
if (N == 1 || N == 0)
return 1;
if (arr[N - 1] > arr[N - 2])
{
return 0;
}
return sorted_d(arr, N - 1);
}
这是两个单独的递归函数,用于检查数组是按升序还是降序排序(它们为每种情况返回一个),我似乎找不到只使用一个来完成这项工作的方法(该函数必须仅当无论顺序如何(升序或降序)都已排序时才返回 1。有什么帮助吗?
编辑: 也许我的问题不够清楚。我只想创建一个问题,仅当数组已排序时才返回 1(无论升序/降序的排序方向),否则返回 0。
【问题讨论】:
-
int sorted(int arr[], int N, int direction);...sorted(a, 10, -1)相当于sorted_d(a, 10) -
你这是什么意思
-
如果你想要一个多算法函数,你需要提供一种机制来指定算法选择到其中的代码(通过参数或者,可怕的是,通过其他方式,如全局)。但我怀疑这并不能回答你的问题,因为我不相信你清楚你在问什么。你说:“我似乎无法找到一种方法,只使用一个来完成这项工作。”嗯……“工作”??当您询问如何制作一个可以根据要求执行 either 的功能时,我们读到了这一点。 (因此一种将 which 指定为函数参数的方法)。如果不是这种情况,您需要澄清您的问题。
-
为什么要用递归函数?
-
@4386427 - 可能出了什么问题? :-)