Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 01.10.2009, 20:02   #11
kakawkin
Форумчанин
 
Регистрация: 21.09.2009
Сообщений: 431
По умолчанию

вот это должно помочь на 90%
Код:
{ 

The factorial of a positive integer is defined as: 

 

n! = n*(n-1)*(n-2)*(n-3)*...*2*1 

1! = 1 

0! = 1 

 

Example: 5! = 5*4*3*2*1 

} 

 

// Iterative Solution: 

 

function FacIterative(n: Word): Longint; 

var 

f: LongInt; 

i: Integer; 

begin 

f := 1; 

for i := 2 to n do f := f * i; 

Result := f; 

end; 

 

 

// Recursive Solution: 

 

function FacRecursive(n: Word): LongInt; 

begin 

if n > 1 then 

   Result := n * FacRecursive(n-1) 

else 

   Result := 1; 

end;
kakawkin вне форума Ответить с цитированием
Старый 01.10.2009, 22:23   #12
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,260
По умолчанию

kakawkin, Вы не разобрались в сути проблемы!
Дело в том, что разрядности LongInt не хватает, чтобы посчитать число 17! (банальное переполнение разрядной сетки происходит). Вот об этом народ и толкует... а Вы тут классические алгоритмы нам приводите...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.10.2009, 22:34   #13
kakawkin
Форумчанин
 
Регистрация: 21.09.2009
Сообщений: 431
По умолчанию

вот ещё что придумал:
Код:
program facttest;

var
    n: byte;

function factorial(n: byte): real;
begin
    if (n = 0) then
        factorial := 1
    else
        factorial := n * factorial(n - 1);
end;

begin
    for n := 0 to 17 do
    begin
        writeln(n, '! = ', factorial(n));
    end;
end.
kakawkin вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вычисление факториала (Pascal) DsDevis Помощь студентам 8 09.12.2010 18:56
(паскаль) Обработка кв. матрицы. Программа есть. Не корректно работает функция SUM.. aslanbek999 Помощь студентам 3 02.06.2009 18:51
функция вычисления сред.арифм и сред.геометр Demigoddess Общие вопросы C/C++ 2 15.05.2009 19:24
Паскаль,функция и множество pavlentus Помощь студентам 4 20.04.2009 19:39
Си, вычисление факториала ManInBlack Помощь студентам 2 07.03.2009 00:50


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS