Pentanacci Numbers - GeeksforGeeks

27 Feb, 2022
The Pentanacci series is a generalization of the Fibonacci sequence where each term is the sum of the five preceding terms. The first few Pentanacci numbers are as follows – 0, 0, 0, 0, 1, 1, 2, 4, 8, 16, 31, 61, 120, 236, 464, 912, 1793, 3525, 6930, 13624, 26784, 52656, 103519.....
Nth Term of Pentanacci number is given by:
T(n) = T(n-1) + T(n-2) + T(n-3) + T(n-4) + T(n-5) with T(0) = T(1) = T(2) = T(3) = 0, T(4) = 1 
Given a number N. The task is to find the N-th Pentanacci number.
Examples: 
Input: N = 7 Output: 2
Input: N = 10 Output: 16 
Naive Approach: The idea is to follow the recurrence for finding the number and use recursion to solve it.
Recurrence relation: T(n) = T(n-1) + T(n-2) + T(n-3) + T(n-4) + T(n-5) 
Below is the implementation of the above approach: 
C++14
Java
Python3
C#
Javascript
// A simple recursive program to print// Nth Pentanacci number#include<bits/stdc++.h>using namespace std;     // Recursive function to find the Nth// Pentanacci numberint printpentaRec(int n){    if (n == 0 || n == 1 ||        n == 2 || n == 3)        return 0;             else if (n == 4 || n == 5)        return 1;    else        return (printpentaRec(n - 1) +                printpentaRec(n - 2) +                printpentaRec(n - 3)+                printpentaRec(n - 4)+                printpentaRec(n - 5));}             // Function to print the Nth// Pentanacci numbervoid printPenta(int n){    cout << printpentaRec(n) << "\n";}             // Driver codeint main(){    int n = 10;         printPenta(n);         return 0;} // This code is contributed by yatinagg
// A simple recursive program to print// Nth Pentanacci numberimport java.util.*;class GFG{     // Recursive function to find the Nth// Pentanacci numberstatic int printpentaRec(int n){    if (n == 0 || n == 1 ||        n == 2 || n == 3)        return 0;             else if (n == 4 || n == 5)        return 1;    else        return (printpentaRec(n - 1) +                printpentaRec(n - 2) +                printpentaRec(n - 3) +                printpentaRec(n - 4) +                printpentaRec(n - 5));}             // Function to print the Nth// Pentanacci numberstatic void printPenta(int n){    System.out.print(printpentaRec(n) + "\n");}             // Driver codepublic static void main(String[] args){    int n = 10;         printPenta(n);}} // This code is contributed by gauravrajput1
# A simple recursive program to print# Nth Pentanacci number   # Recursive program to find the Nth# Pentanacci numberdef printpentaRec(n) :    if (n == 0 or n == 1 or\        n == 2 or n == 3):        return 0    elif (n == 4 or n == 5):        return 1    else :        return (printpentaRec(n - 1) +                printpentaRec(n - 2) +                printpentaRec(n - 3)+                printpentaRec(n - 4)+                printpentaRec(n - 5))           # Function to print the Nth# Pentanacci numberdef printPenta(n) :    print(printpentaRec(n))              # Driver coden = 10printPenta(n)
// A simple recursive program to print// Nth Pentanacci numberusing System; class GFG{     // Recursive function to find the Nth// Pentanacci numberstatic int printpentaRec(int n){    if (n == 0 || n == 1 ||        n == 2 || n == 3)        return 0;              else if (n == 4 || n == 5)        return 1;    else        return (printpentaRec(n - 1) +                printpentaRec(n - 2) +                printpentaRec(n - 3) +                printpentaRec(n - 4) +                printpentaRec(n - 5));}              // Function to print the Nth// Pentanacci numberstatic void printPenta(int n){    Console.WriteLine(printpentaRec(n));} // Driver codestatic void Main(){    int n = 10;          printPenta(n);}} // This code is contributed divyeshrabadiya07
<script>    // A simple recursive program to print    // Nth Pentanacci number         // Recursive function to find the Nth    // Pentanacci number    function printpentaRec(n)    {        if (n == 0 || n == 1 ||            n == 2 || n == 3)            return 0;        else if (n == 4 || n == 5)            return 1;        else            return (printpentaRec(n - 1) +                    printpentaRec(n - 2) +                    printpentaRec(n - 3)+                    printpentaRec(n - 4)+                    printpentaRec(n - 5));    }     // Function to print the Nth    // Pentanacci number    function printPenta(n)    {        document.write(printpentaRec(n) + "</br>");    }     let n = 10;        printPenta(n); // This code is contributed by divyesh072019.</script>
16
 
Efficient Approach: The idea is to use Dynamic Programming to solve this problem. That is memoization of the solution in four variables for the last four terms such that the same subproblem is not computed again and again.
 Below is the implementation of the above approach:
C++14
Java
Python3
C#
Javascript
// C++14 implementation to print// Nth Pentanacci numbers.#include<bits/stdc++.h>using namespace std;     // Function to print Nth// Pentanacci numbervoid printpenta(int n){    if (n < 0)        return;         // Initialize first five    // numbers to base cases    int first = 0;    int second = 0;    int third = 0;    int fourth = 0;    int fifth = 1;         // Declare a current variable    int curr = 0;         if (n == 0 || n == 1 ||        n == 2 || n == 3)        cout << first << "\n";             else if (n == 5)        cout << fifth << "\n";         else    {             // Loop to add previous five numbers        // for each number starting from 5        // and then assign first, second,        // third, fourth to second, third, fourth        // and curr to fifth respectively        for(int i = 5; i < n; i++)        {            curr = first + second +                   third + fourth + fifth;            first = second;            second = third;            third = fourth;            fourth = fifth;            fifth = curr;        }    cout << curr << "\n";    }}             // Driver codeint main(){    int n = 10;         printpenta(n);         return 0;} // This code is contributed by yatinagg
// Java implementation to print// Nth Pentanacci numbers.import java.util.*;class GFG{     // Function to print Nth// Pentanacci numberstatic void printpenta(int n){  if (n < 0)    return;   // Initialize first five  // numbers to base cases  int first = 0;  int second = 0;  int third = 0;  int fourth = 0;  int fifth = 1;   // Declare a current variable  int curr = 0;   if (n == 0 || n == 1 ||      n == 2 || n == 3)    System.out.print(first + "\n");  else if (n == 5)    System.out.print(fifth + "\n");  else  {    // Loop to add previous five numbers    // for each number starting from 5    // and then assign first, second,    // third, fourth to second, third,    // fourth and curr to fifth respectively    for(int i = 5; i < n; i++)    {      curr = first + second +             third + fourth + fifth;      first = second;      second = third;      third = fourth;      fourth = fifth;      fifth = curr;    }    System.out.print(curr + "\n");  }}             // Driver codepublic static void main(String[] args){  int n = 10;  printpenta(n);   }} // This code is contributed by Princi Singh
# Python3 implementation to print# Nth Pentanacci numbers.   # Function to print Nth# Pentanacci number     def printpenta(n) :    if (n < 0):         return        # Initialize first five     # numbers to base cases     first = 0     second = 0     third = 0     fourth = 0    fifth = 1       # declare a current variable     curr = 0        if (n == 0  or n == 1 or\        n == 2 or n == 3):         print(first)    elif (n == 5):         print(fifth)        else:           # Loop to add previous five numbers         # for each number starting from 5         # and then assign first, second,         # third, fourth to second, third, fourth         # and curr to fifth respectively         for i in range(5, n):            curr = first + second +\                 third + fourth + fifth            first = second             second = third             third = fourth             fourth = fifth            fifth = curr                print(curr)     # Driver coden = 10printpenta(n)
// C# implementation to print// Nth Pentanacci numbers.using System;class GFG{     // Function to print Nth// Pentanacci numberstatic void printpenta(int n){  if (n < 0)    return;   // Initialize first five  // numbers to base cases  int first = 0;  int second = 0;  int third = 0;  int fourth = 0;  int fifth = 1;   // Declare a current variable  int curr = 0;   if (n == 0 || n == 1 ||      n == 2 || n == 3)    Console.Write(first + "\n");  else if (n == 5)    Console.Write(fifth + "\n");  else  {    // Loop to add previous five numbers    // for each number starting from 5    // and then assign first, second,    // third, fourth to second, third,    // fourth and curr to fifth respectively    for(int i = 5; i < n; i++)    {      curr = first + second +             third + fourth + fifth;      first = second;      second = third;      third = fourth;      fourth = fifth;      fifth = curr;    }    Console.Write(curr + "\n");  }} // Driver codepublic static void Main(String[] args){  int n = 10;  printpenta(n);   }} // This code is contributed by shikhasingrajput
<script>     // Javascript implementation to print    // Nth Pentanacci numbers.         // Function to print Nth    // Pentanacci number    function printpenta(n)    {      if (n < 0)        return;       // Initialize first five      // numbers to base cases      let first = 0;      let second = 0;      let third = 0;      let fourth = 0;      let fifth = 1;       // Declare a current variable      let curr = 0;       if (n == 0 || n == 1 ||          n == 2 || n == 3)        document.write(first + "</br>");      else if (n == 5)        document.write(fifth + "</br>");      else      {        // Loop to add previous five numbers        // for each number starting from 5        // and then assign first, second,        // third, fourth to second, third,        // fourth and curr to fifth respectively        for(let i = 5; i < n; i++)        {          curr = first + second +                 third + fourth + fifth;          first = second;          second = third;          third = fourth;          fourth = fifth;          fifth = curr;        }        document.write(curr + "</br>");      }    }         let n = 10;      printpenta(n);      </script>
16
 
yatinagg
GauravRajput1
divyeshrabadiya07
princi singh
shikhasingrajput
divyesh072019
mukesh07
anikety0000
Numbers
Dynamic Programming
Mathematical
Recursion
Dynamic Programming
Mathematical
Recursion
Numbers
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Bellman–Ford Algorithm | DP-23
Floyd Warshall Algorithm | DP-16
Subset Sum Problem | DP-25
Matrix Chain Multiplication | DP-8
Longest Palindromic Substring | Set 1
Write a program to print all permutations of a given string
C++ Data Types
Set in C++ Standard Template Library (STL)
Merge two sorted arrays
Modulo Operator (%) in C/C++ with Examples