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

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

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

вот это должно помочь на 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, 23:23   #12
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 26,121
Репутация: 5675
По умолчанию

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

вот ещё что придумал:
Код:
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 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


15:31.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.