Python:查找lis中最大数的递归函数

2024-06-06 20:08:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试着做一个来自教科书Zelle Python编程的实验室工作

这个问题要求我“编写并测试递归函数max(),以找到列表中最大的数字。最大值是第一项中较大的一项,是所有其他项目中最大的一项。

def Max(list):
    if len(list) <= 1:
        else:
            return list[0]
        else:
            m = Max(list[1:])
            return m if m > list[0] else list[0]

def main():
    list = eval(raw_input(" please enter a list of numbers: "))
    print("the largest number is: ", Max(list))

main()

或者我应该打开一个包含数字的txt文件,然后使用递归?

我相信递归是这样工作的

def function()
> if something:
>>return 0
>else:
>>return function()

Tags: 列表returnifmaindef编程function数字
3条回答

你对递归工作原理的理解似乎很好。

如果你的if块被弄乱了,你有两个else对一个if并且对齐不出来。您需要删除第一个else,并取消缩进低于if一级的所有内容。例如:

def Max(list):
    if len(list) == 1:
        return list[0]
    else:
        m = Max(list[1:])
        return m if m > list[0] else list[0]

def main():
    list = eval(raw_input(" please enter a list of numbers: "))
    print("the largest number is: ", Max(list))

main()

下面是解决上述问题的另一种方法

def maximum(L):
    if len(L) == 1:
        return L[0]
    else:
        return max(L[0],maximum(L[1:]))

所以输入和输出示例:

L= [2,4,6,23,1,46]
print maximum(L)

产生

46

基本方法就是这样。

  1. 如果列表只包含一个元素,则该元素为最大值。请立即返回。
  2. 否则,列表包含多个元素。列表中的第一个元素要么是最大值,要么不是。
  3. 第一个元素的最大值只是列表中的第一个元素。
  4. 递归地调用rest(除了第一个元素之外的所有元素)上的Max,以找到这些元素的最大值。
  5. 比较第3步和第4步的结果。结果是数字越大。把它还给我。

现在有一些语法错误。例如,一个if有两个else子句,缩进看起来很有趣。一个if块只能有一个else。但是如果你按照这些说明操作,你应该有一个有效的算法。

相关问题 更多 >