# Fibonomial coefficient and Fibonomial triangle

Fibonomial Coefficient
In mathematics, the Fibonomial coefficients or Fibonacci-binomial coefficients are defined as

where n and k are non-negative integers, 0 ≤ k ≤ n, Fj is the j-th Fibonacci number and n!F is the nth Fibonorial, where 0!F, being the empty product, evaluates to 1.
The Fibonomial coefficients are all integers. Some special values are:

Fibonomial triangle
The Fibonomial coefficients are similar to binomial coefficients and can be displayed in a triangle similar to Pascal’s triangle. The first eight rows are shown below.

The Recurrence Relation for Fibonomial Triangle:

Given a positive integer n. The task is to print Fibonomial triangle of height n (or n + 1 rows).

Examples:

Input : n = 6
Output :
1
1 1
1 1 1
1 2 2 1
1 3 6 3 1
1 5 15 15 5 1
1 8 40 60 40 8 1

Input : n = 5
Output :
1
1 1
1 1 1
1 2 2 1
1 3 6 3 1
1 5 15 15 5 1


## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Below is the implementation of printing Fibonomial Triangle of height n:

 // CPP Program to print Fibonomial Triangle of height n.  #include  #define N 6  using namespace std;     // Function to produce Fibonacci Series.  void fib(int f[], int n)  {      int i;          /* 0th and 1st number of the series are 0 and 1*/     f[0] = 0;      f[1] = 1;          for (i = 2; i <= n; i++)                 /* Add the previous 2 numbers in the series           and store it */         f[i] = f[i-1] + f[i-2];      }     // Function to produce fibonomial coefficient  void fibcoef(int fc[][N+1], int f[], int n)  {      for (int i = 0; i <= n; i++)          fc[i][0] = 1;                 for (int i = 1; i <= n; i++)      {          for (int j = 1; j <= i; j++)          {              int k = j;              while(k--)                  fc[i][j] *= f[k];                                 k = 1;                             while((j+1)!=k)                  fc[i][j] /= f[k++];          }      }  }     // Function to print Fibonomial Triangle.  void printFibonomialTriangle(int n)  {      int f[N+1] = { 0 };             // Finding the fibonacci series.      fib(f, n);             // to store triangle value.      int dp[N+1][N+1] = { 0 };             // initalising the 0th element of each row       // and diagonal element equal to 0.      for (int i = 0; i <= n; i++)          dp[i][0] = dp[i][i] = 1;                 // for each row.      for (int i = 1; i <= n; i++)      {          // for each column.          for (int j = 1; j < i; j++)                         // finding each element using recurrence               // relation.              dp[i][j] = f[i-j+1]*dp[i-1][j-1] +                         f[j-1]*dp[i-1][j];          }             // printing the Fibonomial Triangle.      for (int i = 0; i <= n; i++)      {          for (int j = 0; j <= i; j++)                      cout << dp[i][j] << " ";                  cout << endl;      }  }  // Driven Program  int main()  {      int n = 6;          printFibonomialTriangle(n);      return 0;  }

 // Java Program to print Fibonomial   // Triangle of height n.  class GFG  {      static final int N=6;             // Function to produce Fibonacci Series.      static void fib(int f[], int n)      {          int i;                 /* 0th and 1st number of           the series are 0 and 1*/         f[0] = 0;          f[1] = 1;                 for (i = 2; i <= n; i++)                         /* Add the previous 2 numbers in               the series and store it */             f[i] = f[i-1] + f[i-2];       }             // Function to produce fibonomial coefficient      static void fibcoef(int fc[][], int f[], int n)      {          for (int i = 0; i <= n; i++)              fc[i][0] = 1;                         for (int i = 1; i <= n; i++)          {              for (int j = 1; j <= i; j++)              {                  int k = j;                                     while(k > 0)                  {                      k--;                      fc[i][j] *= f[k];                  }                                         k = 1;                                     while((j + 1) != k)                      fc[i][j] /= f[k++];              }          }      }             // Function to print Fibonomial Triangle.      static void printFibonomialTriangle(int n)      {          int f[] = new int[N+1];                     // Finding the fibonacci series.          fib(f, n);                     // to store triangle value.          int dp[][] = new int[N + 1][N + 1];                     // initalising the 0th element of each row           // and diagonal element equal to 0.          for (int i = 0; i <= n; i++)              dp[i][0] = dp[i][i] = 1;                         // for each row.          for (int i = 1; i <= n; i++)          {              // for each column.              for (int j = 1; j < i; j++)                                 // finding each element using recurrence                   // relation.                  dp[i][j] = f[i - j + 1] * dp[i - 1][j - 1] +                                             f[j-1]*dp[i-1][j];           }                     // printing the Fibonomial Triangle.          for (int i = 0; i <= n; i++)          {              for (int j = 0; j <= i; j++)                       System.out.print(dp[i][j] + " ");                   System.out.println();          }  }         // Driver code      public static void main (String[] args)      {          int n = 6;                     printFibonomialTriangle(n);      }  }     // This code is contributed by Anant Agarwal.

 # Python3 Program to print Fibonomial   # Triangle of height n.  N = 6;     # Function to produce Fibonacci Series.  def fib(f, n):         # 0th and 1st number of the       # series are 0 and 1      f[0] = 0;      f[1] = 1;         for i in range(2, n + 1):                 # Add the previous 2 numbers in           # the series and store it           f[i] = f[i - 1] + f[i - 2];      # Function to produce fibonomial  # coefficient  def fibcoef(fc, f, n):         for i in range(n + 1):          fc[i][0] = 1;                 for i in range(1, n + 1):          for j in range(1, i + 1):              k = j;              while(k > 0):                  k -= 1;                  fc[i][j] *= f[k];                                 k = 1;                             while((j + 1) != k):                  fc[i][j] /= f[k];                  k += 1;     # Function to print Fibonomial Triangle.  def printFibonomialTriangle(n):         f = [0] * (N + 1);             # Finding the fibonacci series.      fib(f, n);             # to store triangle value.      dp = [[0 for x in range(N + 1)]                for y in range(N + 1)];             # initalising the 0th element of each      # row and diagonal element equal to 0.      for i in range(n + 1):          dp[i][0] = 1;          dp[i][i] = 1;                 # for each row.      for i in range(1, n + 1):          # for each column.          for j in range(1, i):                         # finding each element using               # recurrence relation.              dp[i][j] = (f[i - j + 1] * dp[i - 1][j - 1] +                          f[j - 1] * dp[i - 1][j]);              # printing the Fibonomial Triangle.      for i in range(n + 1):          for j in range(i + 1):                   print(dp[i][j], end = " ");               print("");         # Driver Code  n = 6;   printFibonomialTriangle(n);     # This code is contributed by mits

 // C# Program to print Fibonomial   // Triangle of height n.  using System;     class GFG  {      static int N = 6;             // Function to produce Fibonacci Series.      static void fib(int []f, int n)      {          int i;                 /* 0th and 1st number of          the series are 0 and 1*/         f[0] = 0;          f[1] = 1;                 for (i = 2; i <= n; i++)                         /* Add the previous 2 numbers in               the series and store it */             f[i] = f[i - 1] + f[i - 2];       }             // Function to produce fibonomial coefficient      static void fibcoef(int [,]fc, int []f, int n)      {          for (int i = 0; i <= n; i++)              fc[i,0] = 1;                         for (int i = 1; i <= n; i++)          {              for (int j = 1; j <= i; j++)              {                  int k = j;                                     while(k > 0)                  {                      k--;                      fc[i, j] *= f[k];                  }                                         k = 1;                                     while((j + 1) != k)                      fc[i, j] /= f[k++];              }          }      }             // Function to print Fibonomial Triangle.      static void printFibonomialTriangle(int n)      {          int []f = new int[N + 1];                     // Finding the fibonacci series.          fib(f, n);                     // to store triangle value.          int [,]dp = new int[N + 1, N + 1];                     // initalising the 0th element of each row           // and diagonal element equal to 0.          for (int i = 0; i <= n; i++)              dp[i, 0] = dp[i, i] = 1;                         // for each row.          for (int i = 1; i <= n; i++)          {              // for each column.              for (int j = 1; j < i; j++)                                 // finding each element using recurrence                   // relation.                  dp[i,j] = f[i - j + 1] * dp[i - 1,j - 1] +                                      f[j - 1] * dp[i - 1, j];           }                     // printing the Fibonomial Triangle.          for (int i = 0; i <= n; i++)          {              for (int j = 0; j <= i; j++)               Console.Write(dp[i,j] + " ");               Console.WriteLine();          }  }         // Driver code      public static void Main ()      {          int n = 6;                     printFibonomialTriangle(n);      }  }     // This code is contributed by Vt_m.

 

Output:

1
1 1
1 1 1
1 2 2 1
1 3 6 3 1
1 5 15 15 5 1
1 8 40 60 40 8 1


Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

Article Tags :
Practice Tags :