Привет, я новичок в python, и мне было интересно, как мне найти максимальное значение в моем алгоритме поиска?

#python-3.x

#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)

  

Комментарии:

1. вы можете напрямую использовать функцию «max», предоставляемую python, или вы хотите написать свою собственную отдельную функцию?

Ответ №1:

Используйте метод max, предоставленный для list

 max(numbers)
  

Комментарии:

1. поэтому замените max_search(числа) на max (числа)

Ответ №2:

Когда вы пишете код для максимального числа в списке, начните с рассмотрения базовых случаев, которые будут.

  1. Максимум может быть предопределенной константой, скажем, -1, если список пуст
  2. Максимум — это первый элемент в списке, если в списке есть только один элемент.

После этого, если список длиннее, вы присваиваете первому элементу списка значение maximum, а затем выполняете итерацию по списку, обновляя максимум, если находите число, которое больше максимального.

 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] и рекурсивно вызываете те же функции с теми же аргументами, что приведет к переполнению стека

Ответ №3:

Я внес некоторые изменения

 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)