Другие языки программирования и технологии

Надо алгоритм нахождения факториала на с++

попробовал вот так
int factorial(int f){
int m=1;

for(int i=1;i<=f;i++){

m=m*i;

}

cout<<m;

return m;

}

чет не получается
SM
Sasha Medvedev
73
#include <iostream>
int factorial(int n) {
int val = 1;
for (int i = 1; i <= n; val *= i, ++i);
return val;
}
int main() { std::cout << factorial(7) << std::endl; std::cin.get(); }

//====================================================

#include <iostream>
int factorial(int n) { return (n == 0) ? 1 : n * factorial(n - 1); }
int main() { std::cout << factorial(7) << std::endl; std::cin.get(); }

//====================================================

#include <iostream>
template<int n> struct factorial { enum { val = factorial<n - 1>::val * n }; };
template<> struct factorial<0> { enum { val = 1 }; };
int main() { std::cout << factorial<7>::val << std::endl; std::cin.get(); }

//====================================================

#include <iostream>
template<int n> class factorial { public: static const int val = factorial<n - 1>::val * n; };
template<> class factorial<0> { public: static const int val = 1; };
int main() { std::cout << factorial<7>::val << std::endl; std::cin.get(); }
Руслан Билалов
Руслан Билалов
82 862
Лучший ответ
int factorial(int num) // через рекурсию
{
if (num == 1)
{
return num;
} else {
return num * factorial(num - 1);
}
}

Можно еще проверочку, не передали ли число = 0 седлать не пере вызовом ф-ии, а в нейже.
это как хошь. я не стал.
$x = 10; // Считаем факториал числа 10
if ($x < 0) $f "Факториал числа <b>$x</b> не существует";
else {
$f = 1;
for ($i = 1; $i <= $x; $i++)
$f *= $i;
}
echo $f;

На c++ не знаю, но вот на php

Похожие вопросы