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

Факториал парных чисел в С++ (VS 2010)

Как решить задание с выводом на экран факториал парных чисел? Просто факториал я вывести могу. А как быть с N!! Помогите исправить (дополнить) код: // Альфа_5.1.cpp: определяет точку входа для консольного приложения. /*Задание: Вариант 4. Сформировать список, состоящий из чисел входящих в последовательность n!! (факториал парных чисел) n определяет пользователь. n!! = 2 * 4 * 6 ...* n * / #include "stdafx.h" #include "math.h" #include "windows.h" #include <iostream> using namespace std; int n,i,res; int _tmain(int argc, _TCHAR* argv[]) { SetConsoleCP(1251); SetConsoleOutputCP(1251); cout << "---Орлов Вадим. 206 гр. 4 вар.---\n"; res = 1; cout << "\nЗдесь могла бы быть ваша реклама!!!\n"; cout << "\nВвведите n!! (например - 7), n = "; cin >> n; if (n < 0) cout << "n!! не существует:(\n "; if (n == 0) cout << "n!! = 1\n "; if (n > 0) { cout << "\nn!! = "; for (i=1; i<=n; i++) { int y=2; int fmod(int i, int y); //По идее это должно отвечать за определение парности числа. Хотя я не уверен. res = res*i; cout << i; if (i
.D
. Drakon.
426
// Visual C++ 2010 console application
#include <conio.h>
#include <iostream>
#include <windows.h>
#include <tchar.h>

using namespace std;

__int64 factorial(__int64 n);

void main()
{
system("color 9B");
setlocale(LC_CTYPE, "Russian_Russia.1251");
::SetConsoleTitle(_T("Рекурсивная функция. Вычисление двойного факториала"));

do
{
__int64 result = 0, n;

do
{
cout << endl << " ВЫЧИСЛИТЬ ФАКТОРИАЛ";
cout << endl << " Введите целое положительное чётное число от 2 до 32: ";
cin >> n;
cout << endl;

if (n < 2 || n > 32)
{
cout << endl << " ОШИБКА при вводе!!! ";
_getch();
system("cls");
}

}
while(n < 2 || n > 32);

if (n % 2 == 0)
{
result = factorial(n);

cout << endl << " " << n << "!! = " << result;
}
else cout << "Число должно быть чётным! ";

_getch();
system("cls");
}
while(true);
}

__int64 factorial(__int64 n)
{
return (n == 2) ? 2 : n * factorial(n - 2);
}
Андрей Живодеров
Андрей Живодеров
87 204
Лучший ответ
Это называется двойной факториал
// Двойной факториал сноска на стр 83
// Справочник по специальным функциям с формулами, графиками и математическими таблицами
// Под редакцией М. Абрамовица и И. Стиган перевод с английского под редакцией В. А. Диткина и Л. Н. Карамзиной
// Москва "Наука" Главная редакция физико-математической литературы 1979
// (2n)!! = 2*4*6*...*(2n) = 2^n*n!
// (2n-1)!! = 1*3*5*...*(2n-1)

unsigned long long fak2(long x)
{
unsigned long long mul=1; while(x>1) mul*=x,x-=2; return mul;
}
Youssef Jibai
Youssef Jibai
76 473
Тебе похоже повезло, и нужно вычислять не двойной факториал, а факториал ПАРНЫХ чисел. Для этого нужно будет их вначале еще и вычислить; -).Парными в математике называют простые числа, разделенные только одним (естественно четным) ) числом.
К примеру парные числа: 5,7,а также 11,13....
Тогда P(1)=1,P(2)=3,P(3)=5.
Факториал_парный (3)=1*3*5=15.
факториал_парный (4)=1*3*5*7=105.