Algorithms_in_C++  1.0.0
Set of algorithms implemented in C++.
double_factorial.cpp File Reference

Compute double factorial: \(n!!\). More...

#include <cassert>
#include <iostream>
Include dependency graph for double_factorial.cpp:

Functions

uint64_t double_factorial_iterative (uint64_t n)
 
uint64_t double_factorial_recursive (uint64_t n)
 
int main ()
 main function
 

Detailed Description

Compute double factorial: \(n!!\).

Double factorial of a non-negative integer n, is defined as the product of all the integers from 1 to n that have the same parity (odd or even) as n.
It is also called as semifactorial of a number and is denoted by \(n!!\)

Function Documentation

◆ double_factorial_iterative()

uint64_t double_factorial_iterative ( uint64_t  n)

Compute double factorial using iterative method

16  {
17  uint64_t res = 1;
18  for (uint64_t i = n;; i -= 2) {
19  if (i == 0 || i == 1)
20  return res;
21  res *= i;
22  }
23  return res;
24 }

◆ double_factorial_recursive()

uint64_t double_factorial_recursive ( uint64_t  n)

Compute double factorial using resursive method.
Recursion can be costly for large numbers.

29  {
30  if (n <= 1)
31  return 1;
32  return n * double_factorial_recursive(n - 2);
33 }
double_factorial_recursive
uint64_t double_factorial_recursive(uint64_t n)
Definition: double_factorial.cpp:29