Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
димарик
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 81
1

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

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

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

Описать рекурсивные функции вещественного типа, вычисляющие факториал и двойной факториал заданного числа
Описать рекурсивные функции Fact(N) и Fact2(N) вещественного типа, вычисляющие...

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

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

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

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

12
Evg
Эксперт CАвтор FAQ
19288 / 7147 / 528
Регистрация: 30.03.2009
Сообщений: 19,997
Записей в блоге: 30
18.06.2012, 16:12 2
Два способа очевидны - в цикле и через рекурсию
0
димарик
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 81
18.06.2012, 16:14  [ТС] 3
а ещё
0
bLesk
42 / 42 / 8
Регистрация: 24.11.2009
Сообщений: 165
18.06.2012, 16:16 4
ну циклы тоже разные бывают =) так что ещё + 2-3 цикла )
0
DiffEreD
1442 / 779 / 257
Регистрация: 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);
 }
0
Evg
Эксперт CАвтор FAQ
19288 / 7147 / 528
Регистрация: 30.03.2009
Сообщений: 19,997
Записей в блоге: 30
18.06.2012, 16:33 6
yuron_477, это не два разных способа вычисления, а два разных способа записи одного и того же кода

Цитата Сообщение от димарик Посмотреть сообщение
а ещё
Честно говоря, сомневаюсь, что нужно что-то ещё. Т.е. остальные способы скорее всего будут высосаны из пальца. Я по крайней мере не представляю их
0
ForEveR
В астрале
Эксперт С++
7996 / 4755 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 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/262b9ed545f6a0ecebac5502eca0cac6

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

Добавлено через 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;
}
0
alkagolik
Заблокирован
18.06.2012, 16:55 8
есть в свободном доступе. Хорошая вещь
А. В. Ладиков, “Улучшенный алгоритм вычисления факториала”, Матем. заметки, 83:6 (2008), 857–863
0
Catstail
Модератор
23603 / 11704 / 2046
Регистрация: 12.02.2012
Сообщений: 19,094
18.06.2012, 17:53 9
Цитата Сообщение от димарик Посмотреть сообщение
число можно брать любое
попробуйте любым способом вычислить 200!
0
diagon
Higher
1937 / 1203 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
18.06.2012, 18:08 10
Еще можно вычислять по модулю брутфорсом и улучшенным алгоритмом.
Еще можно прикрутить длинную арифметику.
0
igorrr37
1867 / 1483 / 751
Регистрация: 21.12.2010
Сообщений: 2,473
Записей в блоге: 11
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;
}
2
Evg
Эксперт CАвтор FAQ
19288 / 7147 / 528
Регистрация: 30.03.2009
Сообщений: 19,997
Записей в блоге: 30
18.06.2012, 18:24 12
фигасе...
0
VadimAndronov
24 / 24 / 11
Регистрация: 15.06.2012
Сообщений: 138
18.06.2012, 19:52 13
Можно составить таблицу значений и искать там нужный результат при вызове функции
0
18.06.2012, 19:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.06.2012, 19:52

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

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

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


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

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