Рекурсивный треугольник Паскаля PythonPython

Программы на Python
Anonymous
Рекурсивный треугольник Паскаля Python

Сообщение Anonymous »

После выполнения задания по созданию треугольника Паскаля с помощью итеративной функции я попытался воссоздать его с помощью рекурсивной функции.
Я дошел до того, что могу заставить его создать отдельную строку, соответствующую числу, переданному в качестве аргумента. Но несколько попыток заставить его создать весь треугольник до этой строки включительно потерпели неудачу. Я даже пытался написать отдельную функцию, которая перебирает диапазон входного числа и вызывает рекурсивную функцию с повторяемой цифрой, добавляя отдельные строки в список перед возвратом этого списка. Желаемый результат должен представлять собой список списков, где каждый внутренний список содержит одну строку треугольника. Вот так:
[[1], [1, 1], [1, 2, 1]...]

Вместо этого он возвращает беспорядочный вложенный список, полностью заполненный единицами.
Вот рекурсивная функция, о которой идет речь, без второй функции для добавления строк (мне все равно нужна была одна всеобъемлющая функция):
def triangle(n):
if n == 0:
return []
elif n == 1:
return [1]
else:
new_row = [1]
last_row = triangle(n-1)
for i in range(len(last_row)-1):
new_row.append(last_row + last_row[i+1])
new_row += [1]
return new_row

Для ясности: я уже выполнил поставленную задачу, это просто для более глубокого понимания рекурсии...
Итеративное решение:
def triangle(n):
result = []
for row in range(n):
newrow = [1]
for col in range(1, row+1):
newcell = newrow[col-1] * float(row+1-col)/col
newrow.append(int(newcell))
result.append(newrow)
return result

Вернуться в «Python»