忽略元素的递归函数 - python

Recursive function with elements ignored - python

各位!

我有以下任务: “编写一个递归函数,使用列表作为参数,returns 最大值。 非整数元素将被忽略!"

我写了下面的代码:

def recursion(listOne):
              
    if(len(listOne) == 1):
        return listOne[0]
    
    else:
        maximum = recursion(listOne[1:])
        if(isinstance(listOne[0], int)) or (isinstance(listOne[0], float)):
            if(maximum > listOne[0]):
                return maximum
            else:
                return listOne[0]
        else:
            return listOne[0]
    
listOne = ["apple", 7, 10, (5, 4)]
    
x = recursion(listOne)
print("Max number in the list is: ", x)

它适用于仅包含数字的列表; 输出显示:“列表中的最大数量是:苹果”。

如果有人能帮助我解决这个问题,我将不胜感激:)

P.S。 我是 python 的新人,来自 C/C++ 背景,所以请理解我缺乏 python 特定知识。

这是满足您的任务要求的一种方式:

def recursion(lst, maxi=float("-inf")):
    if len(lst) == 1:
        return lst[0] if isinstance(lst[0], int) and lst[0] > maxi else maxi

    if isinstance(lst[0], int):
        maxi = maxi if maxi > lst[0] else lst[0]

    return recursion(lst[1:], maxi)


list_one = ["apple", 7, 10, (5, 4)]

res = recursion(list_one)
print("Max number in the list is: ", res)