Dwusilnia w C++

Zad. 2. Napisz funkcję, która dla nieujemnej liczby n, takiej, że

$$0\leq n\leq 30$$

wyznaczy dwusilnię.

 

Rozwiązanie. 

Dwusilnię dla dowolnej liczby naturalnej n wyznaczamy według wzoru:

$$n!! = \left\{\begin{matrix} 1 &,\ dla\ n = 0\\ n \cdot (n-2) \cdot (n-4) \cdot ... \cdot 4 \cdot 2 &,\ dla\ n\; parzystego\; dodatniego \\n \cdot (n-2) \cdot (n-4) \cdot ... \cdot 3 \cdot 1 &,\ dla\; n\; nieparzystego\end{matrix}\right.$$

Dla przykładu policzmy:

$$5!! = 5 \cdot 3 \cdot 1 = 15$$

$$6!! = 6 \cdot 4 \cdot 2 = 48$$

Dla liczby parzystej n liczymy iloczyn wszystkich liczb parzystych dodatnich niewiększych od tej liczby, natomiast dla nieparzystej iloczyn wszystkch liczb naturalnych nieparzystych niewiększych od n.

Rozwiązanie
 
#include <cstdlib>
#include <iostream>
using namespace std;

long long dwusilnia(unsigned int n)
{
	long long ds = 1; //zmienna przechowująca kolejne mnożenia

	for(;n>1;n-=2)
		ds*=n;

	return ds; 
}

int main()
{
	unsigned int n;

	cout<<"Podaj liczbę: ";
	cin>>n;
	cout<<"Dwusilnia z liczby "<<n<<" wynosi "<<dwusilnia(n)<<endl;

	system("pause");
	return 0;
}