Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 20, 2013 07:50:41

rico
Зарегистрирован: 2013-11-19
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

рекурсия

Добрый день.
Не могу разобраться с рекурсией. Нужно, чтобы рекурсивно вызывалась функция, но вызов происходит только один раз. В чем я ошибся?

def print_hello():
    print 'Hello'
    return
def print_func(func, number):
    if number <= 0:
        print 'finish'
    else:
        func
        print number
        print_func(func, number-1)
print_func(print_hello(), 5)

Офлайн

#2 Ноя. 20, 2013 08:26:45

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

рекурсия

def print_hello():
    print 'Hello'
def print_func(func, number):
    if number <= 0:
        print 'finish'
        return
    else:
        func()
        print number
        print_func(func, number-1)
print_func(print_hello, 5)
пробуй

Офлайн

#3 Ноя. 20, 2013 08:53:45

rico
Зарегистрирован: 2013-11-19
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

рекурсия

Все работает. Спасибо.

Ох уж эти скобочки.

Офлайн

#4 Ноя. 20, 2013 08:55:35

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

рекурсия

rico
ты так же забыл написать условия выхода с рекурсивной функции

Офлайн

#5 Ноя. 20, 2013 09:41:33

rico
Зарегистрирован: 2013-11-19
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

рекурсия

Насколько я понял вы говорите про оператор return в блоке if. Но так без него ведь тоже работает? Или есть какой-то нюанс?

def print_hello():
    print 'Hello'
def print_func(func, number):
    if number <= 0:
        print 'finish'
        
    else:
        func()
        print number
        print_func(func, number-1)
print_func(print_hello, 5)

Офлайн

#6 Ноя. 20, 2013 13:14:01

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

рекурсия

Да, ты прав

Офлайн

#7 Ноя. 20, 2013 15:45:14

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

рекурсия

мне думается что лучше писать

return print_func(func, number-1)
сейчас в данном случае неважно, но когда понадобится от функции возвращение результата своей работы, чтоб не удивляться- почему None а не то, что ожидал.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version