попытка рекурсии для печати шаблона, основанного на прогрессии c arithemati Python - PullRequest
0 голосов
/ 23 апреля 2020

Я изучаю рекурсивную функцию и пытаюсь напечатать шаблон, основанный на арифметической прогрессии c. как:
Вход 1: n = 12, k = 5
Выход 2: 12, 7, 2, -3, 2, 7, 12
Вход 2: n = 10, k = 2
Выход 2: 10, 8, 6, 4, 2, 0, 2, 4, 6, 8, 10.
Я получаю, и Нет в конце. как: - 12, 7, 2, -3, 2, 7, 12, нет
Вот мой код.

# Reading the inputs
n = int(input())
k = int(input())

# Function
def pattern(n,k):

    if (n == 0 or n < 0): 
        print(n, end = ", ")


    else:
        # First print decreasing order 
        print(n, end = ", ") 
        pattern(n - k, k) 

        # Then print increasing order 
        print(n, end = ", ")  


print (pattern(n,k))

1 Ответ

0 голосов
/ 24 апреля 2020

Хотя комментарий @ ggorlen исправляет вашу непосредственную проблему (+1), давайте попробуем другой подход. Вместо print во время рекурсии мы рекурсивно создадим список нужных вам чисел, вернем его и затем напечатаем:

# Function
def pattern(n, k):

    if n <= 0:
        return [n]

    return [n] + pattern(n - k, k) + [n]

# Reading the inputs
n = int(input())
k = int(input())

print(*pattern(n, k), sep=', ')

Помимо упрощения кода, теперь у вас есть выбор: выведите результат pattern() или передайте его другому коду для дальнейшей обработки.

> python3 test.py
12
5
12, 7, 2, -3, 2, 7, 12
> python3 test.py
10
2
10, 8, 6, 4, 2, 0, 2, 4, 6, 8, 10
> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...