Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 6, 2015 10:37:34

orionit
Зарегистрирован: 2015-12-01
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Не понятный код.

Всем доброго времени суток, в учебнике дошел до темы Рекурсивные функции и в подразделе темы приведен пример

#!/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)
Но я не могу понять первый, а т.к я его не понимаю то и второй тоже не очень понятен, поясните пожалуйста новичку как данные примеры работают.

Офлайн

#2 Дек. 6, 2015 10:44:22

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Не понятный код.

А вы вообще узнавали у гугла, что такое рекурсия?



Офлайн

#3 Дек. 6, 2015 10:46:27

orionit
Зарегистрирован: 2015-12-01
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Не понятный код.

FishHook
Да, это функции которые вызывают сами себя.

Офлайн

#4 Дек. 6, 2015 10:50:26

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Не понятный код.

Ок, вот в этой строке функция вызывает саму себя

return L[0] + mysum(L[1:])
остальные 4 строки элементарны. Что вам конкретно неясно в этом коде?



Офлайн

#5 Дек. 6, 2015 11:19:34

orionit
Зарегистрирован: 2015-12-01
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Не понятный код.

FishHook
Все доперло, только не понятен маленький нюанс зачем нужен

return L[0]
если и без него тоже работает.
def mysum(L):
	print(L)
	if not L:
		return 0
	else:	
            mysum(L[1:])
mysum([1, 2, 3])

Офлайн

#6 Дек. 6, 2015 11:22:16

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Не понятный код.

Чего работает?
Вы же понимаете, что для того, чтобы получить сумму, где-то обязательно должна производиться операция сложения. Где же она у вас производится?



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version