Posted on by Kalkicode
Code Pattern

Print Fibonacci triangle

In this article, we will discuss how to print a Fibonacci triangle using a C program. The Fibonacci sequence is a series of numbers in which each number is the sum of the two preceding ones. A Fibonacci triangle is a triangular arrangement of the Fibonacci numbers.

Problem Statement

We are given the number of rows in the Fibonacci triangle, and we need to print the triangle with the corresponding Fibonacci numbers.

Example

Let's consider an example to understand the problem better. If we want to print a Fibonacci triangle with 7 rows, the output will be as follows:

ROW SIZE: 7

1
1 2
3 5 8
13 21 34 55
89 144 233 377 610
987 1597 2584 4181 6765 10946
17711 28657 46368 75025 121393 196418 317811

Approach

To solve this problem, we will use a nested loop structure. The outer loop will iterate through the rows, and the inner loop will print the Fibonacci numbers for each row.

Algorithm

  1. Start with two initial values: first = 1 and second = 0.
  2. Initialize two variables, i and j, to keep track of the row and column.
  3. For each row from 0 to the given number of rows:
    1. For each column from 0 to the current row:
      1. Print the current Fibonacci number (first).
      2. Calculate the next Fibonacci number:
        • first = second + first
        • second = first - second
    2. Move to the next line to print the next row.

Pseudocode


function fibonacci_triangle(row)
    first = 1
    second = 0
    for i = 0 to row
        for j = 0 to i
            print first
            first = second + first
            second = first - second
        print new line

Code Solution

//C Program
//Display Fibonacci triangle 
#include <stdio.h>

//Print Fibonacci triangle of given rows
void fibonacci_triangle(int row)
{
	printf("ROW SIZE : %d\n\n", row);
	//This is two initial value
	int first = 1;
	int second = 0;
	int j = 0;
	int i = 0;
	for (i = 0; i < row; ++i)
	{
		for (j = 0; j <= i; j++)
		{
			printf("%d\t", first);
			//Get next fibonacci number
			first = second + first;
			second = first - second;
		}
		printf("\n");
	}
	printf("\n\n");
}
int main()
{
	//Test Case
	fibonacci_triangle(7);
	fibonacci_triangle(5);
	return 0;
}

Output

ROW SIZE : 7

1
1	2
3	5	8
13	21	34	55
89	144	233	377	610
987	1597	2584	4181	6765	10946
17711	28657	46368	75025	121393	196418	317811


ROW SIZE : 5

1
1	2
3	5	8
13	21	34	55
89	144	233	377	610

// Java Program
// Display Fibonacci triangle 
class MyPattern
{
	//Print Fibonacci triangle of given rows
	public void fibonacci_triangle(int row)
	{
		System.out.print("ROW SIZE : " + row + "\n\n");
		//This is two initial value
		int first = 1;
		int second = 0;
		int j = 0;
		int i = 0;
		for (i = 0; i < row; ++i)
		{
			for (j = 0; j <= i; j++)
			{
				System.out.print("" + first + "\t");
				//Get next fibonacci number
				first = second + first;
				second = first - second;
			}
			System.out.print("\n");
		}
		System.out.print("\n\n");
	}
	public static void main(String[] args)
	{
		MyPattern obj = new MyPattern();
		//Test Cases
		obj.fibonacci_triangle(7);
		obj.fibonacci_triangle(5);
	}
}

Output

ROW SIZE : 7

1
1	2
3	5	8
13	21	34	55
89	144	233	377	610
987	1597	2584	4181	6765	10946
17711	28657	46368	75025	121393	196418	317811


ROW SIZE : 5

1
1	2
3	5	8
13	21	34	55
89	144	233	377	610

// C++ Program
// Display Fibonacci triangle 
#include<iostream>

using namespace std;
class MyPattern
{
	public:
		//Print Fibonacci triangle of given rows
		void fibonacci_triangle(int row)
		{
			cout << "ROW SIZE : " << row << "\n\n";
			//This is two initial value
			int first = 1;
			int second = 0;
			int j = 0;
			int i = 0;
			for (i = 0; i < row; ++i)
			{
				for (j = 0; j <= i; j++)
				{
					cout << "" << first << "\t";
					//Get next fibonacci number
					first = second + first;
					second = first - second;
				}
				cout << "\n";
			}
			cout << "\n\n";
		}
};
int main()
{
	MyPattern obj = MyPattern();
	//Test Cases
	obj.fibonacci_triangle(7);
	obj.fibonacci_triangle(5);
	return 0;
}

Output

ROW SIZE : 7

1
1	2
3	5	8
13	21	34	55
89	144	233	377	610
987	1597	2584	4181	6765	10946
17711	28657	46368	75025	121393	196418	317811


ROW SIZE : 5

1
1	2
3	5	8
13	21	34	55
89	144	233	377	610

<?php
// Php Program
// Display Fibonacci triangle 
class MyPattern
{
	//Print Fibonacci triangle of given rows
	public 	function fibonacci_triangle($row)
	{
		echo("ROW SIZE : ". $row ."\n\n");
		//This is two initial value
		$first = 1;
		$second = 0;
		$j = 0;
		$i = 0;
		for ($i = 0; $i < $row; ++$i)
		{
			for ($j = 0; $j <= $i; $j++)
			{
				echo("". $first ."\t");
				//Get next fibonacci number
				$first = $second + $first;
				$second = $first - $second;
			}
			echo("\n");
		}
		echo("\n\n");
	}
}

function main()
{
	$obj = new MyPattern();
	//Test Cases
	$obj->fibonacci_triangle(7);
	$obj->fibonacci_triangle(5);
}
main();

Output

ROW SIZE : 7

1
1	2
3	5	8
13	21	34	55
89	144	233	377	610
987	1597	2584	4181	6765	10946
17711	28657	46368	75025	121393	196418	317811


ROW SIZE : 5

1
1	2
3	5	8
13	21	34	55
89	144	233	377	610

// Node Js Program
// Display Fibonacci triangle 
class MyPattern
{
	//Print Fibonacci triangle of given rows
	fibonacci_triangle(row)
	{
		process.stdout.write("ROW SIZE : " + row + "\n\n");
		//This is two initial value
		var first = 1;
		var second = 0;
		var j = 0;
		var i = 0;
		for (i = 0; i < row; ++i)
		{
			for (j = 0; j <= i; j++)
			{
				process.stdout.write("" + first + "\t");
				//Get next fibonacci number
				first = second + first;
				second = first - second;
			}
			process.stdout.write("\n");
		}
		process.stdout.write("\n\n");
	}
}

function main(args)
{
	var obj = new MyPattern();
	//Test Cases
	obj.fibonacci_triangle(7);
	obj.fibonacci_triangle(5);
}
main();

Output

ROW SIZE : 7

1
1	2
3	5	8
13	21	34	55
89	144	233	377	610
987	1597	2584	4181	6765	10946
17711	28657	46368	75025	121393	196418	317811


ROW SIZE : 5

1
1	2
3	5	8
13	21	34	55
89	144	233	377	610

#  Python 3 Program
#  Display Fibonacci triangle 
class MyPattern :
	# Print Fibonacci triangle of given rows
	def fibonacci_triangle(self, row) :
		print("ROW SIZE : ", row ,"\n")
		# This is two initial value
		first = 1
		second = 0
		j = 0
		i = 0
		i = 0
		while (i < row) :
			j = 0
			while (j <= i) :
				print(first , end = "\t")
				# Get next fibonacci number
				first = second + first
				second = first - second
				j += 1
			
			print( end = "\n")
			i += 1
		
		print("\n")
	

def main() :
	obj = MyPattern()
	# Test Cases
	obj.fibonacci_triangle(7)
	obj.fibonacci_triangle(5)


if __name__ == "__main__": main()

Output

ROW SIZE :  7

1
1	2
3	5	8
13	21	34	55
89	144	233	377	610
987	1597	2584	4181	6765	10946
17711	28657	46368	75025	121393	196418	317811


ROW SIZE :  5

1
1	2
3	5	8
13	21	34	55
89	144	233	377	610

#  Ruby Program
#  Display Fibonacci triangle 
class MyPattern

	# Print Fibonacci triangle of given rows
	def fibonacci_triangle(row)
	
		print("ROW SIZE  :", row ,"\n\n")
		# This is two initial value
		first = 1
		second = 0
		j = 0
		i = 0
		i = 0
		while (i < row)
		
			j = 0
			while (j <= i)
			
				print("", first ,"\t")
				# Get next fibonacci number
				first = second + first
				second = first - second
				j += 1
			end
			print("\n")
			i += 1
		end
		print("\n\n")
	end
end
def main()

	obj = MyPattern.new()
	# Test Cases
	obj.fibonacci_triangle(7)
	obj.fibonacci_triangle(5)
end
main()

Output

ROW SIZE  :7

1	
1	2	
3	5	8	
13	21	34	55	
89	144	233	377	610	
987	1597	2584	4181	6765	10946	
17711	28657	46368	75025	121393	196418	317811	


ROW SIZE  :5

1	
1	2	
3	5	8	
13	21	34	55	
89	144	233	377	610	


// Scala Program
// Display Fibonacci triangle 
class MyPattern
{
	//Print Fibonacci triangle of given rows
	def fibonacci_triangle(row: Int): Unit = {
		print("ROW SIZE : " + row + "\n\n");
		//This is two initial value
		var first: Int = 1;
		var second: Int = 0;
		var j: Int = 0;
		var i: Int = 0;
		i = 0;
		while (i < row)
		{
			j = 0;
			while (j <= i)
			{
				print("" + first + "\t");
				//Get next fibonacci number
				first = second + first;
				second = first - second;
				j += 1;
			}
			print("\n");
			i += 1;
		}
		print("\n\n");
	}
}
object Main
{
	def main(args: Array[String]): Unit = {
		var obj: MyPattern = new MyPattern();
		//Test Cases
		obj.fibonacci_triangle(7);
		obj.fibonacci_triangle(5);
	}
}

Output

ROW SIZE : 7

1
1	2
3	5	8
13	21	34	55
89	144	233	377	610
987	1597	2584	4181	6765	10946
17711	28657	46368	75025	121393	196418	317811


ROW SIZE : 5

1
1	2
3	5	8
13	21	34	55
89	144	233	377	610

// Swift Program
// Display Fibonacci triangle 
class MyPattern
{
	//Print Fibonacci triangle of given rows
	func fibonacci_triangle(_ row: Int)
	{
		print("ROW SIZE : ", row ,"\n");
		//This is two initial value
		var first: Int = 1;
		var second: Int = 0;
		var j: Int = 0;
		var i: Int = 0;
		i = 0;
		while (i < row)
		{
			j = 0;
			while (j <= i)
			{
				print(first ,"\t", terminator: "");
				//Get next fibonacci number
				first = second + first;
				second = first - second;
				j += 1;
			}
			print("\n", terminator: "");
			i += 1;
		}
		print("\n\n", terminator: "");
	}
}
func main()
{
	let obj: MyPattern = MyPattern();
	//Test Cases
	obj.fibonacci_triangle(7);
	obj.fibonacci_triangle(5);
}
main();

Output

ROW SIZE :  7

1
1 	2
3 	5 	8
13 	21 	34 	55
89 	144 	233 	377 	610
987 	1597 	2584 	4181 	6765 	10946
17711 	28657 	46368 	75025 	121393 	196418 	317811


ROW SIZE :  5

1
1 	2
3 	5 	8
13 	21 	34 	55
89 	144 	233 	377 	610

// C# Program
// Display Fibonacci triangle 
using System;
class MyPattern
{
	//Print Fibonacci triangle of given rows
	public void fibonacci_triangle(int row)
	{
		Console.Write("ROW SIZE : " + row + "\n\n");
		//This is two initial value
		int first = 1;
		int second = 0;
		int j = 0;
		int i = 0;
		i = 0;
		while (i < row)
		{
			j = 0;
			while (j <= i)
			{
				Console.Write("" + first + "\t");
				//Get next fibonacci number
				first = second + first;
				second = first - second;
				j++;
			}
			Console.Write("\n");
			i++;
		}
		Console.Write("\n\n");
	}
	public static void Main(String[] args)
	{
		MyPattern obj = new MyPattern();
		//Test Cases
		obj.fibonacci_triangle(7);
		obj.fibonacci_triangle(5);
	}
}

Output

ROW SIZE : 7

1
1	2
3	5	8
13	21	34	55
89	144	233	377	610
987	1597	2584	4181	6765	10946
17711	28657	46368	75025	121393	196418	317811


ROW SIZE : 5

1
1	2
3	5	8
13	21	34	55
89	144	233	377	610

Time Complexity

The time complexity of this solution is O(n^2), where n is the number of rows in the Fibonacci triangle. This is because we have nested loops that iterate up to n.

Finally

In this article, we learned how to print a Fibonacci triangle using a C program. We discussed the problem statement, provided an example, explained the algorithm and pseudocode, and analyzed the time complexity of the solution. The C code implementation and its corresponding output were also presented.

Comment

Please share your knowledge to improve code and content standard. Also submit your doubts, and test case. We improve by your feedback. We will try to resolve your query as soon as possible.

New Comment