Числа Стирлинга первого рода - PascalABC.NET
Формулировка задачи:
Как написать следующую программу:
?
Написать программу для вычисления чисел Стирлинга первого рода. Числа связаны соотношениями: s(n + 1, k) = s(n, k - 1) - ns(n, k), причем s(0, 0) = 1, а для n > 0: s(n, n) = 1, s(n, 0) = 0.
Решение задачи: «Числа Стирлинга первого рода»
textual
Листинг программы
function s1(n, k : integer) : integer; var t : array of array of integer; i, j : integer; begin SetLength(t, n + 2, K + 2); for i := 0 to n + 1 do for j := 0 to k + 1 do t[i, j] := 0; for i := 0 to k do t[i, i] := 1; for i := 1 to n + 1 do for j := 1 to k + 1 do t[i, j] := Pred(i) * t[Pred(i), j] + t[Pred(i), Pred(j)]; result := t[n, k]; SetLength(t, 0, 0); end;
Объяснение кода листинга программы
В данном коде функция s1 вычисляет числа Стирлинга первого рода. Список действий:
- Создаётся массив t размером n+2 на k+2, где n — количество строк, k — количество столбцов.
- Инициализируются все ячейки массива t нулями.
- Заполняются главным образом верхние диагонали массива t единицами.
- Для каждого элемента массива t начиная с первого элемента (для i=1 и j=1) и до последнего элемента (для i=n и j=k) выполняется следующее действие: — t[i, j] = Pred(i) * t[Pred(i), j] + t[Pred(i), Pred(j)];
- Результатом работы функции является элемент t[n, k].
- После выполнения всех операций массив t очищается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д