Рекурсивный треугольник Паскаля 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


Подробнее здесь: https://stackoverflow.com/questions/106 ... s-triangle
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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