не знаю в чём особенность турбо-пролога.
я только обычным пользуюсь.
вариантов факториала мне попадалось как минимум три.
один из них:
fact(0,1) :- !.
fact(N,F) :- N1 is N-1, fact(N1,F1), F is N*F1.
или в одну строчку
fact(N,F) :- N = 0, F is 1, !; N1 is N-1, fact(N1,F1), F is N*F1.
можно ещё приписать проверку положительности аргумента N,
на случай если кому-то ночной горшок в голову ударит
искать факториал отрицательного числа.. .
Другие языки программирования и технологии
Написать на Турбо прологе программу вычисляющую факториал заданного числа
пролог честно говоря не знаю, но так как программирование это математика, то есть рекуррентная формула для вычисления факториала
вот тебе ссылко! http://ru.wikibooks.org/wiki/Язык_РЎРё_РІ_примерах /Факториал, может быть поможет)) Думаю на прологе логика та же самая, но синтаксис другой))
вот тебе ссылко! http://ru.wikibooks.org/wiki/Язык_РЎРё_РІ_примерах /Факториал, может быть поможет)) Думаю на прологе логика та же самая, но синтаксис другой))
Пролог я не знаю, но алгоритм приведу:
заводишь целочисленную переменную f и заносишь в неё 1;
запускаешь цикл с счётчиком от 2 до N (N - число, факториал которого надо найти) ;
на каждом шаге цикла умножаешь f на счётчик;
после цикла в f искомый факториал.
На C:
...
int f = 1;
for (int i = 2; i <= n; i++)
f *= i;
...
Этот способ отличается скорстью. Если пользоваться реккурентной формулой, то алгоритм получается не циклический, а рекурсивный. На больших числах он работает намного медленнее (для N > 40 он работает много больше 2 секунд). Но для справки:
...
int fac(int n)
{
if (n == 1) return 1;
return fac(n - 1) * n;
}
...
f = fac(N);
...
заводишь целочисленную переменную f и заносишь в неё 1;
запускаешь цикл с счётчиком от 2 до N (N - число, факториал которого надо найти) ;
на каждом шаге цикла умножаешь f на счётчик;
после цикла в f искомый факториал.
На C:
...
int f = 1;
for (int i = 2; i <= n; i++)
f *= i;
...
Этот способ отличается скорстью. Если пользоваться реккурентной формулой, то алгоритм получается не циклический, а рекурсивный. На больших числах он работает намного медленнее (для N > 40 он работает много больше 2 секунд). Но для справки:
...
int fac(int n)
{
if (n == 1) return 1;
return fac(n - 1) * n;
}
...
f = fac(N);
...
Похожие вопросы
- На сколько нулей оканчивается факториал заданного числа
- НОК 2-ух чисел - C++ Помогите, люди добрые. Как написать прогу на C++, которая вычисляет НОК двух чисел
- Факториал парных чисел в С++ (VS 2010)
- написать программу на С++, которая вычисляет колличество положительных чисел в массиве?
- Проверте программу, которая вычисляет сумму целых чисел от а до 500 (значение a вводится с клавиатуры). c++
- помогите написать программу на паскаль Заданное натуральное число не превосходящее 1000 записать прописью, то есть выве
- Помогите найти алгоритм подбора множителей к числам заданного массива, сумма произведений которых равна заданному числу
- Набираю в TURBO Pascal самую обычную программу (решение заданных чисел) но почему то при вводе числа 3,14(и всех дробей)
- помогите в решении задачи, программу надо написать в турбо паскале
- как посчитать 365! (С++) Нужен алгоритм вычисления факториала больших чисел.