Find nth Hermite number
Last Updated :
24 Jun, 2022
Given a positive integer n, the task is to print the nth Hermite number.
Hermite Number: In mathematics, Hermite numbers are values of Hermite Polynomials at zero arguments.
The Recurrence Relation of Hermite polynomials at x = 0 is given by,
Hn = -2 * (n – 1) * Hn – 2
where H0 = 1 and H1 = 0
First few terms of Hermite number sequence are:
1, 0, -2, 0, 12, 0, -120, 0, 1680, 0, -30240
Examples:
Input: n = 6
Output: -120
Input: n = 8
Output: 1680
Naive Approach: Write a recursive function implementing the above recurrence relation.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
int getHermiteNumber( int n)
{
if (n == 0)
return 1;
if (n == 1)
return 0;
else
return -2 * (n - 1) * getHermiteNumber(n - 2);
}
int main()
{
int n = 6;
cout << getHermiteNumber(n);
return 0;
}
|
Java
import java.util.*;
class GFG {
static int getHermiteNumber( int n)
{
if (n == 0 )
return 1 ;
else if (n == 1 )
return 1 ;
else
return - 2 * (n - 1 ) * getHermiteNumber(n - 2 );
}
public static void main(String[] args)
{
int n = 6 ;
System.out.println(getHermiteNumber(n));
}
}
|
Python3
def getHermiteNumber( n):
if n = = 0 :
return 1
if n = = 1 :
return 0
else :
return ( - 2 * (n - 1 ) *
getHermiteNumber(n - 2 ))
n = 6
print (getHermiteNumber(n));
|
C#
using System;
class GFG {
static int getHermiteNumber( int n)
{
if (n == 0)
return 1;
else if (n == 1)
return 1;
else
return -2 * (n - 1) * getHermiteNumber(n - 2);
}
public static void Main()
{
int n = 6;
Console.WriteLine(getHermiteNumber(n));
}
}
|
PHP
<?php
function getHermiteNumber( $n )
{
if ( $n == 0)
return 1;
if ( $n == 1)
return 0;
else
return -2 * ( $n - 1) *
getHermiteNumber( $n - 2);
}
$n = 6;
echo getHermiteNumber( $n );
?>
|
Javascript
<script>
function getHermiteNumber(n)
{
if (n == 0)
return 1;
else if (n == 1)
return 1;
else
return -2 * (n - 1) * getHermiteNumber(n - 2);
}
let n = 6;
document.write(getHermiteNumber(n));
</script>
|
Time Complexity: O(n)
Auxiliary Space: O(n)
Efficient Approach: It is clear from the Hermite sequence that if n is odd then nth Hermite number will be 0. Now, nth Hermite number can be found using,
Where (n – 1)!! = 1 * 3 * 5 * (n – 1) i.e. double factorial of (n – 1)
Below is the implementing of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
int doubleFactorial( int n)
{
int fact = 1;
for ( int i = 1; i <= n; i = i + 2) {
fact = fact * i;
}
return fact;
}
int hermiteNumber( int n)
{
if (n % 2 == 1)
return 0;
else {
int number = ( pow (2, n / 2)) * doubleFactorial(n - 1);
if ((n / 2) % 2 == 1)
number = number * -1;
return number;
}
}
int main()
{
int n = 6;
cout << hermiteNumber(n);
return 0;
}
|
Java
import java.util.*;
class GFG {
static int doubleFactorial( int n)
{
int fact = 1 ;
for ( int i = 1 ; i <= n; i = i + 2 ) {
fact = fact * i;
}
return fact;
}
static int hermiteNumber( int n)
{
if (n % 2 == 1 )
return 0 ;
else {
int number = ( int )(Math.pow( 2 , n / 2 )) * doubleFactorial(n - 1 );
if ((n / 2 ) % 2 == 1 )
number = number * - 1 ;
return number;
}
}
public static void main(String[] args)
{
int n = 6 ;
System.out.println(hermiteNumber(n));
}
}
|
Python3
from math import pow
def doubleFactorial(n):
fact = 1
for i in range ( 1 , n + 1 , 2 ):
fact = fact * i
return fact
def hermiteNumber(n):
if (n % 2 = = 1 ):
return 0
else :
number = (( pow ( 2 , n / 2 )) *
doubleFactorial(n - 1 ))
if ((n / 2 ) % 2 = = 1 ):
number = number * - 1
return number
if __name__ = = '__main__' :
n = 6
print ( int (hermiteNumber(n)))
|
C#
using System;
class GFG {
static int doubleFactorial( int n)
{
int fact = 1;
for ( int i = 1; i <= n; i = i + 2) {
fact = fact * i;
}
return fact;
}
static int hermiteNumber( int n)
{
if (n % 2 == 1)
return 0;
else {
int number = ( int )(Math.Pow(2, n / 2)) * doubleFactorial(n - 1);
if ((n / 2) % 2 == 1)
number = number * -1;
return number;
}
}
public static void Main()
{
int n = 6;
Console.WriteLine(hermiteNumber(n));
}
}
|
PHP
<?php
function doubleFactorial( $n )
{
$fact = 1;
for ( $i = 1; $i <= $n ; $i = $i + 2)
{
$fact = $fact * $i ;
}
return $fact ;
}
function hermiteNumber( $n )
{
if ( $n % 2 == 1)
return 0;
else
{
$number = (pow(2, $n / 2)) *
doubleFactorial( $n - 1);
if (( $n / 2) % 2 == 1)
$number = $number * -1;
return $number ;
}
}
$n = 6;
echo hermiteNumber( $n );
?>
|
Javascript
<script>
function doubleFactorial(n)
{
var fact = 1;
for ( var i = 1; i <= n; i = i + 2) {
fact = fact * i;
}
return fact;
}
function hermiteNumber(n)
{
if (n % 2 == 1)
return 0;
else {
var number = (Math.pow(2, n / 2)) *
doubleFactorial(n - 1);
if ((n / 2) % 2 == 1)
number = number * -1;
return number;
}
}
var n = 6;
document.write( hermiteNumber(n));
</script>
|
Time Complexity: O(n)
Auxiliary Space: O(1)
Share your thoughts in the comments
Please Login to comment...