嗨,我是python新手,想知道如何在搜索算法中找到最大值?

时间:2019-04-22 11:40:58

标签: python-3.x

  

您好,即时通讯目前正在学习离散结构和算法课程,并且必须首次使用python,因此即时通讯在让我的函数在列表中找到最大值时遇到了一些麻烦,您可以看看我的代码,因为即时通讯正在尝试也可以转换为伪代码:


def max_search(numbers):
    numbers = [1, 5, 9, 3, 4, 6]

    max = numbers = [0]

    for i in range(1, len(numbers)):
        if numbers[i] > max:
            max = numbers[i]

    max_search(numbers)
    print(max)

3 个答案:

答案 0 :(得分:1)

使用为列表提供的max方法

max(numbers)

答案 1 :(得分:0)

我做了一些更改

def max_search(numbers):

    max = -1 # if numbers contains all positive number

    for i in range(len(numbers)):
        if numbers[i] > max:
            max = numbers[i]

max = max_search([1, 5, 9, 3, 4, 6])
print(max)

答案 2 :(得分:0)

在列表中编写最大数量的代码时,请先考虑基本情况。

  1. 最大值可以是预定义的常数,如果列表为空,则为-1
  2. 如果列表中只有一个元素,则最大值是列表中的第一个元素。

此后,如果列表较长,则将列表的第一个元素分配为最大值,然后遍历列表,如果发现一个大于最大值的数字,则更新最大值。

def max_search(numbers):

    #Maximum of an empty list is undefined, I defined it as -1
    if len(numbers) == 0:
        return -1
    #Maximum of a list with one element is the element itself
    if len(numbers) == 1:
        return numbers[0]

    max = numbers[0]
    #Iterate through the list and update maximum on the fly
    for num in numbers:
        if num >= max:
            max = num

    return max

在您的情况下,您正在函数numbers中用另一个列表覆盖[1, 5, 9, 3, 4, 6]参数,并且递归地调用具有相同参数的相同函数,这将导致堆栈溢出