Факториал числа - Pascal ABC
Формулировка задачи:
Написал программу, которая считает факториал числа.
Но считает она до максимального значения типа REAL. Как сделать, чтобы считался факториал для любого числа? (С массивами пока не знаком.)
Кто может помочь с решением проблемы? И можно ли решить без массивов?
Решение задачи: «Факториал числа»
textual
Листинг программы
Uses CRT; var n:word; m, cnk, fac1, fac2, fac100:BigInteger; Function Factor(const n:word):BigInteger; var fct:BigInteger; begin fct:=1; for var i:=2 to n do fct:=fct*i; Factor:=fct; end; begin m:=0; n:=100; WriteLn('n = ',n); fac100:=Factor(n); WriteLn('n! = ',fac100); for var k:=1 to n do begin Write('k = ',k:2); fac1:=Factor(k); fac2:=Factor(n-k); cnk:=fac100/(fac1*fac2); WriteLn(' Cnk = ',cnk); m:=m+cnk; end; WriteLn; WriteLn('Result: ',m); end.
Объяснение кода листинга программы
- Подключается библиотека CRT.
- Объявляются переменные n, m, cnk, fac1, fac2, fac100 типа BigInteger.
- Определяется функция Factor, которая принимает целочисленный параметр n и возвращает BigInteger.
- В функции Factor инициализируется переменная fct единицей.
- В цикле от 2 до n (inclusive) переменная fct умножается на текущее значение i.
- По завершении цикла значение fct присваивается переменной Factor.
- Выводится значение n.
- Вычисляется факториал n и выводится значение n!.
- Запускается цикл от 1 до n (inclusive).
- Внутри цикла выводятся значения k, fac1, fac2, cnk.
- Значение cnk вычисляется как частное от деления факториала n на произведение факториалов k и (n-k).
- Выводится значение cnk.
- Переменная m инициализируется значением 0.
- Цикл завершается.
- Выводится значение Result, которое равно сумме всех значений cnk.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д