打印给定未排序数组 A[] 中大于 x 的最小元素的程序
Program that prints the smallest element greater than x in a given unsorted array A[]
我必须编写一个使用递归的程序,其输入是一个正数数组 A 和一个正数 x。该程序应打印 A 中大于 x 的最小元素。如果这样的元素不存在,程序应该打印-1。为了
例如,如果 A = [1, 3, 5, 3, 6, 5] 并且 x = 3 那么程序应该打印 5.
我在不使用递归的情况下用常规方法解决了这个程序如下:
FindNum(A[ ], x) {
result = -1;
for (i = 0; i < len(A[ ]); i++) {
if (A[i] > x AND (result > A[i] OR result == -1)) {
result = A[i];
}
}
print (result);
}
我已经在 python 中相应地实现了这个伪代码并且它工作正常。现在我必须使用递归来完成它。我试过这样做,但我不太确定如何正确实施它:
FindNum(A [ ], x) {
i = len(A[]) - 1;
result = -1;
while (i > 0 {
if (A[i] > x AND (result > A[i] OR result == -1)) {
result = A[i];
i--;
}
FindNum(A[i], x);
}
print result;
}
Python 具有简单条件的递归函数(没有一行)。它找到列表尾部的结果,然后尝试用当前元素
改进它
def mingreater(A, x):
if 0 == len(A):
return -1
result = mingreater(A[1:], x)
if result > 0:
if A[0] > x:
return min(result, A[0])
else:
if A[0] > x:
return A[0]
return result
没有 Python 特定切片:
def mingreater(A, x, idx):
if idx == len(A):
return -1
result = mingreater(A, x, idx + 1)
if result > 0:
if A[idx] > x:
return min(result, A[idx])
else:
if A[idx] > x:
return A[idx]
return result
我必须编写一个使用递归的程序,其输入是一个正数数组 A 和一个正数 x。该程序应打印 A 中大于 x 的最小元素。如果这样的元素不存在,程序应该打印-1。为了 例如,如果 A = [1, 3, 5, 3, 6, 5] 并且 x = 3 那么程序应该打印 5.
我在不使用递归的情况下用常规方法解决了这个程序如下:
FindNum(A[ ], x) {
result = -1;
for (i = 0; i < len(A[ ]); i++) {
if (A[i] > x AND (result > A[i] OR result == -1)) {
result = A[i];
}
}
print (result);
}
我已经在 python 中相应地实现了这个伪代码并且它工作正常。现在我必须使用递归来完成它。我试过这样做,但我不太确定如何正确实施它:
FindNum(A [ ], x) {
i = len(A[]) - 1;
result = -1;
while (i > 0 {
if (A[i] > x AND (result > A[i] OR result == -1)) {
result = A[i];
i--;
}
FindNum(A[i], x);
}
print result;
}
Python 具有简单条件的递归函数(没有一行)。它找到列表尾部的结果,然后尝试用当前元素
改进它def mingreater(A, x):
if 0 == len(A):
return -1
result = mingreater(A[1:], x)
if result > 0:
if A[0] > x:
return min(result, A[0])
else:
if A[0] > x:
return A[0]
return result
没有 Python 特定切片:
def mingreater(A, x, idx):
if idx == len(A):
return -1
result = mingreater(A, x, idx + 1)
if result > 0:
if A[idx] > x:
return min(result, A[idx])
else:
if A[idx] > x:
return A[idx]
return result