Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
димарик
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 81
#1

факториал пятью способами - C++

18.06.2012, 15:46. Просмотров 992. Ответов 12
Метки нет (Все метки)

Помогите написать пять способов нахождения факториала, число можно брать любое
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.06.2012, 15:46     факториал пятью способами
Посмотрите здесь:

C++ Факториал
C++ Факториал
C++ факториал
C++ Факториал (n-1)!
Найти количество групп с пятью символами C++
C++ факториал
C++ Создать класс с пятью методами
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
17014 / 5419 / 335
Регистрация: 30.03.2009
Сообщений: 14,667
Записей в блоге: 26
18.06.2012, 16:12     факториал пятью способами #2
Два способа очевидны - в цикле и через рекурсию
димарик
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 81
18.06.2012, 16:14  [ТС]     факториал пятью способами #3
а ещё
bLesk
 Аватар для bLesk
41 / 41 / 1
Регистрация: 24.11.2009
Сообщений: 165
18.06.2012, 16:16     факториал пятью способами #4
ну циклы тоже разные бывают =) так что ещё + 2-3 цикла )
DiffEreD
 Аватар для DiffEreD
1425 / 762 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
18.06.2012, 16:23     факториал пятью способами #5
C++
1
2
3
4
long fuck(long n)
{
   return n > 0 ? n * fuck(n - 1) : 1;
}
C++
1
2
3
4
5
int factorial(int n)
 {
  if(n==1 || n==0) return 1;
   return n* factorial (n-1);
 }
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
17014 / 5419 / 335
Регистрация: 30.03.2009
Сообщений: 14,667
Записей в блоге: 26
18.06.2012, 16:33     факториал пятью способами #6
yuron_477, это не два разных способа вычисления, а два разных способа записи одного и того же кода

Цитата Сообщение от димарик Посмотреть сообщение
а ещё
Честно говоря, сомневаюсь, что нужно что-то ещё. Т.е. остальные способы скорее всего будут высосаны из пальца. Я по крайней мере не представляю их
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
18.06.2012, 16:47     факториал пятью способами #7
Ну допустим 3-ий вариант.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
 
template<int N>
struct Fact
{
   static long long int apply()
   {
      return N * Fact<N - 1>::apply();
   }
};
 
template<>
struct Fact<0>
{
   static long long int apply()
   {
      return 1;
   }
};
 
int main()
{
   std::cout << Fact<5>::apply() << std::endl;
}
http://liveworkspace.org/code/262b9e...ac5502eca0cac6

Конечно с натяжкой, ибо та же рекурсия, но на шаблонах.

Добавлено через 1 минуту
Или так.
Сути не меняет.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
template<int N>
struct Fact
{
   static constexpr long long int value = N * Fact<N - 1>::value;
};
 
template<>
struct Fact<0>
{
   static constexpr long long int value = 1;
};
 
int main()
{
   std::cout << Fact<5>::value << std::endl;
}
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
18.06.2012, 16:55     факториал пятью способами #8
есть в свободном доступе. Хорошая вещь
А. В. Ладиков, “Улучшенный алгоритм вычисления факториала”, Матем. заметки, 83:6 (2008), 857–863
Catstail
Модератор
 Аватар для Catstail
21775 / 10499 / 1704
Регистрация: 12.02.2012
Сообщений: 17,499
18.06.2012, 17:53     факториал пятью способами #9
Цитата Сообщение от димарик Посмотреть сообщение
число можно брать любое
попробуйте любым способом вычислить 200!
diagon
Higher
 Аватар для diagon
1921 / 1187 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
18.06.2012, 18:08     факториал пятью способами #10
Еще можно вычислять по модулю брутфорсом и улучшенным алгоритмом.
Еще можно прикрутить длинную арифметику.
igorrr37
 Аватар для igorrr37
1600 / 1228 / 121
Регистрация: 21.12.2010
Сообщений: 1,875
Записей в блоге: 7
18.06.2012, 18:21     факториал пятью способами #11
по формуле Стирлинга
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
#include <cmath>
 
int main()
{
    std::size_t n(6);
    std::cout << std::sqrt(2 * 3.14159 * n) * std::pow((n / 2.71828), n);
    return 0;
}
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
17014 / 5419 / 335
Регистрация: 30.03.2009
Сообщений: 14,667
Записей в блоге: 26
18.06.2012, 18:24     факториал пятью способами #12
фигасе...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.06.2012, 19:52     факториал пятью способами
Еще ссылки по теме:

C++ Найти количество групп с пятью символами.
C++ Объявить массив из 5 элементов int и инициализируйте его первыми пятью положительными нечетными числами.
C++ Факториал
C++ Пятью пять - двадцать пять
Найти в строке количество групп с пятью символами C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
VadimAndronov
24 / 24 / 4
Регистрация: 15.06.2012
Сообщений: 138
18.06.2012, 19:52     факториал пятью способами #13
Можно составить таблицу значений и искать там нужный результат при вызове функции
Yandex
Объявления
18.06.2012, 19:52     факториал пятью способами
Ответ Создать тему
Опции темы

Текущее время: 10:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru