Почему возвращается None, а не список
def price_num(x, num_list=[]):
if x == 1:
return num_list
else:
for i in range(2, x // 2 + 1):
if x % i == 0:
break
else:
num_list.append(x)
price_num(x-1, num_list)
print(price_num(10))
Если выводить список num_list в самой функции, то выводится нужный список.
Ответы (1 шт):
Автор решения: nyekitka
→ Ссылка
Потому что ваша функция ничего не возвращает по итогу. Что происходит: сначала в список добавляются рекурсивно числа 7, 5, 3, 2. Как только дело доходит до единицы, то вы возвращаете список, но этот возврат происходит в price_num(2, num_list), а дальше вы выходите из рекурсии без всяких возвратов, поэтому правильно будет писать так:
def price_num(x, num_list=[]):
if x == 1:
return num_list
else:
for i in range(2, x // 2 + 1):
if x % i == 0:
break
else:
num_list.append(x)
return price_num(x-1, num_list)
print(price_num(10))
Небольшое замечание: правильнее функцию назвать prime_num.