Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.07.2019, 11:28   #1
RN777
Новичок
Джуниор
 
Регистрация: 03.07.2019
Сообщений: 6
По умолчанию Рекурсия

Код:
def ryad():
    x = int(input())
    if x > 1:
        ryad(x-1)
        k.append(x)
    else:
        return k
k = []
print(ryad(k))
При запросе вводим к примеру 3
Выдает ошибку, бесконечный цикл.
В чем моя ошибка?

Последний раз редактировалось RN777; 03.07.2019 в 12:50.
RN777 вне форума Ответить с цитированием
Старый 03.07.2019, 11:46   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

А что так? Где параметры у функции? Какая это рекурсия, если вместо рекурсивного шага у вас переменная перезапрашивается каждый раз? Кто такой k в функции?
p51x вне форума Ответить с цитированием
Старый 03.07.2019, 12:46   #3
RN777
Новичок
Джуниор
 
Регистрация: 03.07.2019
Сообщений: 6
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Какая это рекурсия, если вместо рекурсивного шага у вас переменная перезапрашивается каждый раз?
Если вам не сложно, поясните этот момент подробнее.
RN777 вне форума Ответить с цитированием
Старый 03.07.2019, 12:49   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

У вас переменная для шага рекурсии X и что в коде функции:
Код:
 x = int(input())
p51x вне форума Ответить с цитированием
Старый 03.07.2019, 13:01   #5
RN777
Новичок
Джуниор
 
Регистрация: 03.07.2019
Сообщений: 6
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
У вас переменная для шага рекурсии X и что в коде функции:
Код:
 x = int(input())
Если не сложно, покажите как это должно быть. Почему бесконечный цикл?

Последний раз редактировалось RN777; 03.07.2019 в 13:05.
RN777 вне форума Ответить с цитированием
Старый 03.07.2019, 17:32   #6
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,304
По умолчанию

Возможно тебе хотелось получить это?
Код:
def ryad(x):
     global k
     if x > 1:
          ryad(x-1)
          k.append(x)
     return k
k = []
x = int(input())
print(ryad(x))
1. В исходной версии вызов
Код:
print(ryad(k))
не работает, так как у функции нет параметра, а у тебя задан аргумент.
2. При рекурсивном вызове всякий раз ты вводишь число большее 1 и цикл вызовов продолжается (повнимательнее почитай про рекурсивные вызовы). Попробуй ввести 1 или 0.
3. else ненужен, так как при последнем вызове x <=1 и вызовы завершаются последовательно выполняя k.append(x).
...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 03.07.2019, 19:58   #7
RN777
Новичок
Джуниор
 
Регистрация: 03.07.2019
Сообщений: 6
По умолчанию

Код:
def ryad(n):
    if n > 0:
        ryad(n-1)
        k.append(n)
    return k

k = [ ]
n = 7
print(ryad(n))
Вопрос закрыт!

Последний раз редактировалось RN777; 03.07.2019 в 20:09.
RN777 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рекурсия c# Max9955 Помощь студентам 0 06.12.2014 17:25
Рекурсия dusya9992 Паскаль, Turbo Pascal, PascalABC.NET 4 29.08.2010 14:14
рекурсия Lena neznayka Помощь студентам 2 16.06.2010 20:46
Рекурсия Solnze2 Паскаль, Turbo Pascal, PascalABC.NET 0 09.06.2010 09:28
рекурсия shelest Помощь студентам 3 14.04.2010 10:12