Как «посчитать», используя рекурсивную функцию, используя только один параметр? - PullRequest
0 голосов
/ 20 января 2020

Цель функции очень проста. Используя только один аргумент типа int, он рекурсивно печатает столько строк, сколько требует аргумент. Первая строка содержит один символ, вторая (при условии, что аргумент не один) два символа и т. Д. До тех пор, пока не будет напечатана n-я строка, содержащая n символов.

Только с одним аргументом и без объявления переменных вне функции я не могу понять, как правильно установить sh гибкую систему отсчета для моего базового случая, которая не является псевдо-итерацией. «Обратный отсчет», который я могу представить абстрактно, - это уменьшение отсутствия, которое, очевидно, требует чего-то, чтобы заменить его. Поскольку вывод должен состоять только из одного символа, я подумал о том, чтобы сделать абсурдно длинную строку и нарезать ее нужное количество раз, используя параметр, но с тех пор отверг идею отсутствия креативности.

Есть ли решение этой проблемы, которое я просто не вижу?

Ответы [ 2 ]

2 голосов
/ 20 января 2020

Ты слишком обдумываешь это. Вы хотите вернуться к базовому случаю, а затем распечатать строки на обратном пути:

def count(num):
    if num > 1:
        count(num-1)
    print("|"*num)

Пример вывода:

>>> def count(num):
...     if num > 1:
...         count(num-1)
...     print("|"*num)
... 
>>> count(4)
|
||
|||
||||
1 голос
/ 20 января 2020

Вы можете замолчать, думая, что сначала вы должны распечатать, а затем сделать рекурсивный вызов. Но в этом случае вам нужно сначала сделать рекурсивный вызов, а затем распечатать, что изменит порядок.

...