首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >打印给定未排序数组A[]中大于x的最小元素的程序

打印给定未排序数组A[]中大于x的最小元素的程序
EN

Stack Overflow用户
提问于 2019-02-27 04:30:06
回答 1查看 334关注 0票数 0

我有一个使用递归的程序,它的输入是一个正数数组A和一个正数x。程序应该打印A中大于x的最小元素。如果这样的元素不存在,程序应该打印−1。例如,如果A= 1,3,5,3,6,5和x=3,那么程序应该打印5。

我已经用传统的方法解决了这个程序,没有使用递归,如下所示:

代码语言:javascript
运行
AI代码解释
复制
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实现了这个伪代码,它工作得很好。现在我必须使用递归来完成它。我尝试过这样做,但我不太确定如何正确地实现它:

代码语言:javascript
运行
AI代码解释
复制
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;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-27 05:27:57

具有简单条件的Python递归函数(不含一行程序)。它查找列表尾部的结果,然后尝试用当前元素来改进它

代码语言:javascript
运行
AI代码解释
复制
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的切片:

代码语言:javascript
运行
AI代码解释
复制
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
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54898073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档