Stern-Brocot Sequence
Last Updated :
07 May, 2021
Stern Brocot sequence is similar to Fibonacci sequence but it is different in the way fibonacci sequence is generated .
Generation of Stern Brocot sequence :
1. First and second element of the sequence is 1 and 1.
2. Consider the second member of the sequence . Then, sum the considered member of the sequence and it’s precedent i.e (1 + 1 = 2) . Now 2 is the next element of our series . Sequence will be [ 1, 1, 2 ]
3. After this element, our next element of the sequence will be the considered element of our second step. Now the sequence will be [ 1, 1, 2, 1 ]
4. Again we do the step 2, but now the considered element will be 2(3rd element ). So, next number of sequence will be sum of considered number and it’s precedent (2 + 1 = 3). Sequence will be now [ 1, 1, 2, 1, 3 ]
5. Like step 3, the next element will be the considered element i.e 2 . Thus sequence will be [ 1, 1, 2, 1, 3, 2 ]
6. Hence this process continues, now next considered element will be 1( 4th element ) .
Here is the simple program to print Stern Brocot sequence .
C++
#include <bits/stdc++.h>
using namespace std;
void SternSequenceFunc(vector< int >& BrocotSequence, int n)
{
for ( int i = 1; BrocotSequence.size() < n; i++)
{
int considered_element = BrocotSequence[i];
int precedent = BrocotSequence[i - 1];
BrocotSequence.push_back(considered_element + precedent);
BrocotSequence.push_back(considered_element);
}
for ( int i = 0; i < 15; ++i)
cout << BrocotSequence[i] << " " ;
}
int main()
{
int n = 15;
vector< int > BrocotSequence;
BrocotSequence.push_back(1);
BrocotSequence.push_back(1);
SternSequenceFunc(BrocotSequence, n);
return 0;
}
|
Java
import java.io.*;
import java.util.*;
class GFG {
static void SternSequenceFunc(Vector<Integer>
BrocotSequence, int n)
{
for ( int i = 1 ; BrocotSequence.size() < n; i++)
{
int considered_element = BrocotSequence.get(i);
int precedent = BrocotSequence.get(i- 1 );
BrocotSequence.add(considered_element + precedent);
BrocotSequence.add(considered_element);
}
for ( int i = 0 ; i < 15 ; ++i)
System.out.print(BrocotSequence.get(i) + " " );
}
public static void main (String[] args) {
int n = 15 ;
Vector<Integer> BrocotSequence = new Vector<Integer>();
BrocotSequence.add( 1 );
BrocotSequence.add( 1 );
SternSequenceFunc(BrocotSequence, n);
}
}
|
Python3
import math
def SternSequenceFunc(BrocotSequence, n):
for i in range ( 1 , n):
considered_element = BrocotSequence[i]
precedent = BrocotSequence[i - 1 ]
BrocotSequence.append(considered_element + precedent)
BrocotSequence.append(considered_element)
for i in range ( 0 , 15 ):
print (BrocotSequence[i] , end = " " )
n = 15
BrocotSequence = []
BrocotSequence.append( 1 )
BrocotSequence.append( 1 )
SternSequenceFunc(BrocotSequence, n)
|
C#
using System;
using System.Collections.Generic;
class GFG
{
static void SternSequenceFunc(List< int >
BrocotSequence, int n)
{
for ( int i = 1;
BrocotSequence.Count < n; i++)
{
int considered_element =
BrocotSequence[i];
int precedent =
BrocotSequence[i - 1];
BrocotSequence.Add(considered_element +
precedent);
BrocotSequence.Add(
considered_element);
}
for ( int i = 0; i < 15; ++i)
Console.Write(
BrocotSequence[i] + " " );
}
static void Main ()
{
int n = 15;
List< int > BrocotSequence =
new List< int >();
BrocotSequence.Add(1);
BrocotSequence.Add(1);
SternSequenceFunc(BrocotSequence, n);
}
}
|
PHP
<?php
function SternSequenceFunc(& $BrocotSequence , $n )
{
for ( $i = 1;
count ( $BrocotSequence ) < $n ;
$i ++)
{
$considered_element =
$BrocotSequence [ $i ];
$precedent = $BrocotSequence [ $i - 1];
array_push ( $BrocotSequence ,
$considered_element +
$precedent );
array_push ( $BrocotSequence ,
$considered_element );
}
for ( $i = 0; $i < 15; ++ $i )
echo ( $BrocotSequence [ $i ]. " " );
}
$n = 15;
$BrocotSequence = array ();
array_push ( $BrocotSequence , 1);
array_push ( $BrocotSequence , 1);
SternSequenceFunc( $BrocotSequence , $n );
?>
|
Javascript
<script>
function SternSequenceFunc( BrocotSequence, n)
{
for ( var i = 1; BrocotSequence.length < n; i++)
{
var considered_element = BrocotSequence[i];
var precedent = BrocotSequence[i - 1];
BrocotSequence.push(considered_element + precedent);
BrocotSequence.push(considered_element);
}
for ( var i = 0; i < 15; ++i)
document.write( BrocotSequence[i] + " " );
}
var n = 15;
var BrocotSequence = [];
BrocotSequence.push(1);
BrocotSequence.push(1);
SternSequenceFunc(BrocotSequence, n);
</script>
|
Output:
1 1 2 1 3 2 3 1 4 3 5 2 5 3 4
References :
Github
Share your thoughts in the comments
Please Login to comment...