#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, если список пуст
- Максимум — это первый элемент в списке, если в списке есть только один элемент.
После этого, если список длиннее, вы присваиваете первому элементу списка значение 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)