Найти - Пользователи
Полная версия: Не понятный код.
Начало » Python для новичков » Не понятный код.
1
orionit
Всем доброго времени суток, в учебнике дошел до темы Рекурсивные функции и в подразделе темы приведен пример
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
def mysum(L):
	print(L)
	if not L:
		return 0
	else:
		return L[0] + mysum(L[1:])
mysum([1, 2, 3, 4, 5])
Потом приведен следующий пример типо для упрощения предыдущего.
L = [1, 2, 3, 4, 5]
sum = 0
while L:
    sum += L[0]
    L = L[1:]
    print(L)
Но я не могу понять первый, а т.к я его не понимаю то и второй тоже не очень понятен, поясните пожалуйста новичку как данные примеры работают.
FishHook
А вы вообще узнавали у гугла, что такое рекурсия?
orionit
FishHook
Да, это функции которые вызывают сами себя.
FishHook
Ок, вот в этой строке функция вызывает саму себя
return L[0] + mysum(L[1:])
остальные 4 строки элементарны. Что вам конкретно неясно в этом коде?
orionit
FishHook
Все доперло, только не понятен маленький нюанс зачем нужен
return L[0]
если и без него тоже работает.
def mysum(L):
	print(L)
	if not L:
		return 0
	else:	
            mysum(L[1:])
mysum([1, 2, 3])
FishHook
Чего работает?
Вы же понимаете, что для того, чтобы получить сумму, где-то обязательно должна производиться операция сложения. Где же она у вас производится?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB