Я недавно начал изучать рекурсию, чтобы очистить мой код и «улучшить мою игру». Таким образом, я пытаюсь делать вещи, которые обычно можно выполнить довольно просто с помощью циклов и т. Д., Но вместо этого практикую их с помощью рекурсивных алгоритмов.
В настоящее время я пытаюсь сгенерировать двумерный массив, которыйтеоретически должен напоминать своего рода прямоугольный треугольник в формации NxN с некоторой высотой n
и значением, которое будет возвращено в 2D-массив.
В качестве примера, скажем, я называю: my_function(3, 'a');
,n = 3
и value = 'a'
Мой результат должен быть таким: [['a'], ['a', 'a'], ['a', 'a', 'a']]
[['a'],
['a', 'a'],
['a', 'a', 'a']]
Где n
определяет, сколько списков будет в самом внешнем списке, а такжесколько элементов должно последовательно появляться в этих внутренних списках в порядке возрастания.
В моем нынешнем виде код выглядит следующим образом:
def my_function(n, value):
base_val = [value]
if n == 0:
return [base_val]
else:
return [base_val] + [my_function(n-1, value)]
К сожалению, используя мой приведенный выше пример n = 3
и value = 'a'
, это в настоящее время выводит: [['a'], [['a'], [['a'], [['a']]]]]
Теперь, это не должно быть отформатировано или напечатано так, как я показал выше в буквальном формате прямоугольного треугольника. (это была просто визуализация того, чего я хочу достичь).
Я, конечно, отвечу на любые уточняющие вопросы, которые вам нужны!