×

C++ Program to Print Fibonacci Triangle

Fibonacci Triangle Program in CPP

Definition:

Fibonacci Triangle as the name suggests is the same as the Fibonacci number series where the next element is the sum of the previous two elements. But, there's a logical difference in Fibonacci Triangle. Typically, Fibonacci Triangle is a triangular arrangement (like Pascal's Triangle). In Fibonacci Triangle, each number is the sum of the two numbers covering left diagonals or right diagonals.

C++ Program to Print Fibonacci Triangle

After rearranging the triangle, it may look like

C++ Program to Print Fibonacci Triangle

Note: A Fibonacci Triangle is also called as Hasoya’s Triangle.

Various recurrence relations properly explain the logic behind it.

Consider a Fibonacci recurrence relation

H(0, 0) = H(1, 0) = H(1, 1) = H(2, 1) = 1

The numbers in the triangle obey recurrence relations.

Also,

 H(n, j) = H(n ? 1, j) + H(n ? 2, j)
 = H(n ? 1, j ? 1) + H(n ? 2, j ? 2). 

 From these relations, we can conclude that:

  1. The outermost diagonals are Fibonacci Numbers.
  • The numbers on middle vertical line are squares of     Fibonacci Numbers.

Let us look at the code below.

 #include<bits/stdc++.h>
 using namespace std;
 int FibonacciTriangle(int number)
 {
     int dp[N][N];
     memset(dp, 0, sizeof(dp));
     dp[0][0] = dp[1][0] = dp[1][1] = 1;
     for (int i = 2; i < number; i++) {
         for (int j = 0; j < number; j++) {
             if (i > j)
                 dp[i][j] = dp[i - 1][j] + dp[i - 2][j];
             else
                 dp[i][j] = dp[i - 1][j - 1] + dp[i - 2][j - 2];
         }
     }
     for (int i = 0; i < number; i++) {
         for (int j = 0; j <= i; j++) 
             cout << dp[i][j] << " ";        
         cout << endl;
     }
 }
 int main()
 {
     int number;
     cin>>number;
     FibonacciTriangle(number);
 return 0;
 } 

Output:

C++ Program to Print Fibonacci Triangle

Explanation:

The above code is a representation of the Fibonacci Triangle. It follows various programming approaches usually dynamic programming.

Function Fibonacci Triangle takes a number from the user and the function is defined as a 2D array that takes values in the forms of rows and columns. The row and column are assigned 0 and 1 value initially. According to the following formula

             H(n ? 1, j ? 1) + H(n ? 2, j ? 2).

Here, if the input is taken as 6, it will print Fibonacci Numbers in the sequence of rows and columns based on either left or right diagonals.

The two loops are defined to iterate over rows and columns. Since the array is multi-dimensional, we can use dynamic programming to assign values in a sequential arrangement that satisfies the above formula for Fibonacci numbers. It ensures that the outermost diagonals are Fibonacci numbers and the middle vertical elements are the square of Fibonacci Numbers.

The next loop iterates through the values in rows and columns and prints them on the console.

Numbers in Characters in C++

It is a popular programming practice where we are supposed to generate strings respective to the digits entered. In order words, numbers in characters simply mean to convert numbers into the characters like they are called.

Example:

 Given an integer N. Task is to convert number in character

Input: 12345

Output: one two three four five

Code:

 #include<bits/stdc++.h>
 using namespace std;
 int NumChar(int number)
 {
     int reverse = 0, r = 0;
     while (number > 0) {
         r = number % 10;
         reverse = reverse * 10 + r;
         number = number / 10;
     }
     while (reverse > 0) {
         r = reverse % 10;
         switch (r) {
         case 1:
             cout << "one ";
             break;
         case 2:
             cout << "two ";
             break;
         case 3:
             cout << "three ";
             break;
         case 4:
             cout << "four ";
             break;
         case 5:
             cout << "five ";
             break;
         case 6:
             cout << "six ";
             break;
         case 7:
             cout << "seven ";
             break;
         case 8:
             cout << "eight ";
             break;
         case 9:
             cout << "nine ";
             break;
         case 0:
             cout << "zero ";
             break;
         default:
             cout << "Invalid ";
             break;
         }
         reverse = reverse / 10;
     }
 }
 int main()
 {
     int number;
     cin>>number;
     NumChar(number);
     return 0;
 } 

Output:

C++ Program to Print Fibonacci Triangle

Explanation:

Start

  1. Define a function taking integer input.
  2. Reverse the number.
  3. Carry out right to left iteration.
  4. Find last digit with the help of modulus operator.
  5. Divide the number by 10 to get the factor.
  6. Switch case to find the corresponding character.
  7. Call the function in the drive code with the number entered.

Note: We can also use loops but that will increase time complexity.


Related Topics

Upcasting and Downcasting in C++

With the help of various examples in the C++ programming language, this section will cover Upcasting and Downcasting. Upcasting and downcasting, on the other hand, are two forms of object typecasting. Consider...

3 minutes read.

C++ Date and Time

The date and time formats in C++ will be covered in this article. Because C++ lacks a proper date and time format, we must rely on the c language. The...

7 minutes read.

Free vs delete() in C++

Free vs delete() in C++ In this section, we will learn about the free() function and also create a C ++ program of the delete operator. What is free() Function in C++? In...

4 minutes read.

C++ Polymorphism

Polymorphism refers to the fact that something exists in several forms. Polymorphism, in simple terms, is the ability of a message to be presented in several formats. A real-life example...

4 minutes read.

C++ Static

What is the Static keyword? In C++, the keyword static is used to give an element some particular properties. Static elements are only given storage in the static storage region once...

4 minutes read.

C++ Pipe Tutorial

A pipe is a mechanism for inter-process communication (IPC) in a Unix-like operating system. It allows two or more processes to communicate with each other by sending and receiving data...

3 minutes read.

C++ Continue in for loop

Continue statement: Inside the loop, the continue statement is used to control the loop. C++ utilizes the continue keyword to implement the continue statement, which transfers the program's flow at the start...

4 minutes read.

CPP Templates

C++ provides a powerful feature called template, which allows the definition of generic classes and generic functions. Generic programming is a technique where different algorithms work in communion by using...

4 minutes read.

How is multiset implemented in C++

Similar to sets, multisets are an associative container type where several items may share the same values. Associative containers implement instantly searchable sorted data structures with O(log n) complexity. In a multiset,...

5 minutes read.

C++ Scope of Variables

In this tutorial, we will explore about the scope of variables in c++ programming language. And also, how it works in a program. What is Scope? The range of applications for something...

4 minutes read.

Inheritance Program in C++

What is Inheritance? Inheritance is the ability of a class to inherit traits and properties from another class. One of the most crucial aspects of Object-Oriented Programming is inheritance. The ability or...

9 minutes read.

How to enter a name in C++

A name is a string or array of characters or letters. The string is one of the most helpful data types offered by the C++ library. A string helps the...

4 minutes read.

Computing index using Pointers Returned by STL Functions in C++

In this tutorial we will learn how to compute index using pointers which returned by STL functions in C++. Many built-in C++ functions return pointers to memory places that provide...

2 minutes read.

Top 14 Best Free C++ IDE (Editor & Compiler) for Windows in 2024

Bjarne Stroustrup created the all-purpose object-oriented programming language C++. To develop C++ programs, there are various Integrated Development Environments (IDE) that offer prewritten code templates. These programs automatically modify the...

6 minutes read.

LCM Program in C++

What is LCM? LCM is an acronym for "least common multiple". It is used to discover the lowest positive integer divisible by all integers (whose LCM is calculated). For instance, the...

4 minutes read.

C++ Inline function

A C++ function that extends in line when called is known as an inline function. It reduces function call overhead by having the compiler use the function code rather than...

4 minutes read.

Size_t Data Type in C++

In C++, the type to express the object size in bytes is defined as Size_t, an unsigned integer type offered by the standard library for describing the object's size and...

3 minutes read.

C++ Friend Functions

In C++, friends are special functions that are not a part of a class yet have access to its private and protected members. The friend keyword is used to declare...

4 minutes read.

Reverse function in C++

The function std::reverse() is included in the standard template library of C++. It takes in a beginning and ending iterator, reversing the order. To use the reverse statement, we need...

2 minutes read.

sort() function in C++

This tutorial covers the various built-in sort functions found in the C++ algorithm’s library.  What Does C++ Sort Mean? The concept of sorting in C++ entails rearranging an array's elements in a...

3 minutes read.