Числа Стирлинга первого рода - 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 вычисляет числа Стирлинга первого рода. Список действий:

  1. Создаётся массив t размером n+2 на k+2, где n — количество строк, k — количество столбцов.
  2. Инициализируются все ячейки массива t нулями.
  3. Заполняются главным образом верхние диагонали массива t единицами.
  4. Для каждого элемента массива t начиная с первого элемента (для i=1 и j=1) и до последнего элемента (для i=n и j=k) выполняется следующее действие: — t[i, j] = Pred(i) * t[Pred(i), j] + t[Pred(i), Pred(j)];
  5. Результатом работы функции является элемент t[n, k].
  6. После выполнения всех операций массив t очищается.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.583 из 5
Похожие ответы