Каждая строка начинается и заканчивается единицей, а внутренние элементы равны сумме двух соседних чисел предыдущей строки. Добавляйте строки последовательно в результат.
Генерация n строк треугольника Паскаля
Каждая строка начинается и заканчивается единицей, а внутренние элементы равны сумме двух соседних чисел предыдущей строки. Добавляйте строки последовательно в результат.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Написать функцию, получающую целое число n и возвращающую массив, содержащий первые n строк треугольника Паскаля.
def generate_pascal(n):
# реализация функции
pass
Функция должна корректно обрабатывать n = 0 (возвращать пустой массив) и любые положительные значения n.
Ответ
Каждая строка начинается и заканчивается единицей, а внутренние элементы равны сумме двух соседних чисел предыдущей строки. Добавляйте строки последовательно в результат.
def generate_pascal(n):
if not isinstance(n, int) or n < 0:
raise ValueError('n должно быть неотрицательным целым')
rows = []
for index in range(n):
row = [1] * (index + 1)
for column in range(1, index):
row[column] = rows[-1][column - 1] + rows[-1][column]
rows.append(row)
return rows
При n = 0 цикл не запускается и возвращается []. Каждая строка — отдельный список. Создаётся n(n + 1)/2 элементов; стоимость арифметики дополнительно растёт с размером больших целых Python.