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

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

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

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

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

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

Создать класс с пятью методами - C++
нужно создать класс обычный с пятью методами помогите прошу!!!

Найти количество групп с пятью символами. - C++
Дана строка, состоящая из групп нулей и единиц. Каждая группа отделя-ется от другой одним или несколькими пробелами. Найти количество групп...

Найти количество групп с пятью символами - C++
Обьясните пожалуста задачу: Дана строка, состоящая из групп нулей и единиц. Каждая группа отделя- ется от другой одним или...

В строке найти количество групп с пятью символами - C++
Дана строка, состоящая из групп нулей и единиц. Каждая группа отделяется от другой одним или несколькими пробелами. Найти количество групп...

Найти в строке количество групп с пятью символами - C++
Необходимо решать задачу: Дана строка, состоящая из групп нулей и единиц. Каждая группа отделяется от другой одним или несколькими...

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

Дана строка, состоящая из групп нулей и единиц.Найти количество групп с пятью символами - C++
Дана строка, состоящая из групп нулей и единиц. Каждая группа отделяется от другой одним или несколькими пробелами. Найти количество групп...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Evg
Эксперт CАвтор FAQ
17536 / 5774 / 370
Регистрация: 30.03.2009
Сообщений: 15,891
Записей в блоге: 26
18.06.2012, 16:12     факториал пятью способами #2
Два способа очевидны - в цикле и через рекурсию
димарик
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 81
18.06.2012, 16:14  [ТС]     факториал пятью способами #3
а ещё
bLesk
41 / 41 / 1
Регистрация: 24.11.2009
Сообщений: 165
18.06.2012, 16:16     факториал пятью способами #4
ну циклы тоже разные бывают =) так что ещё + 2-3 цикла )
DiffEreD
1429 / 766 / 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
17536 / 5774 / 370
Регистрация: 30.03.2009
Сообщений: 15,891
Записей в блоге: 26
18.06.2012, 16:33     факториал пятью способами #6
yuron_477, это не два разных способа вычисления, а два разных способа записи одного и того же кода

Цитата Сообщение от димарик Посмотреть сообщение
а ещё
Честно говоря, сомневаюсь, что нужно что-то ещё. Т.е. остальные способы скорее всего будут высосаны из пальца. Я по крайней мере не представляю их
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 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
Заблокирован
18.06.2012, 16:55     факториал пятью способами #8
есть в свободном доступе. Хорошая вещь
А. В. Ладиков, “Улучшенный алгоритм вычисления факториала”, Матем. заметки, 83:6 (2008), 857–863
Catstail
Модератор
22514 / 10919 / 1774
Регистрация: 12.02.2012
Сообщений: 18,066
18.06.2012, 17:53     факториал пятью способами #9
Цитата Сообщение от димарик Посмотреть сообщение
число можно брать любое
попробуйте любым способом вычислить 200!
diagon
Higher
1928 / 1194 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
18.06.2012, 18:08     факториал пятью способами #10
Еще можно вычислять по модулю брутфорсом и улучшенным алгоритмом.
Еще можно прикрутить длинную арифметику.
igorrr37
1644 / 1272 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 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
17536 / 5774 / 370
Регистрация: 30.03.2009
Сообщений: 15,891
Записей в блоге: 26
18.06.2012, 18:24     факториал пятью способами #12
фигасе...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.06.2012, 19:52     факториал пятью способами
Еще ссылки по теме:

Пятью пять - двадцать пять - C++
Привет родные форумчане! Пожалуйста помогите решить буду особенно благодарен если напишите код с комментариями что как работает, заранее...

Факториал (n-1)! - C++
Помогите, пожалуйста, написать факториал (n-1)! очень надо

Факториал - C++
помогите написать прогу факториала в С++ с помощью циклов. Мне нужна простая прога а не на пол экрана. облазил весь инет, нигде нет...

факториал (2k+1)!с++ - C++
помогите пожалуйста посчитать факториал (2k+1)! и если возможно с построчными комментариями заранее спасибо!

факториал в с++ - C++
Дано целое число N (&gt;0). Вывести сумму 2 + 1/(2!) +1/(3!)+ ... + 1/(N!) Полученное число является приближеным значением константы...


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

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

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