Stern-Brocot Sequence

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++
Java
Python3
C#
PHP
Javascript
// CPP program to print Brocot Sequence#include <bits/stdc++.h>using namespace std; void SternSequenceFunc(vector<int>& BrocotSequence, int n){    // loop to create sequence    for (int i = 1; BrocotSequence.size() < n; i++)    {        int considered_element = BrocotSequence[i];        int precedent = BrocotSequence[i - 1];         // adding sum of considered element and it's precedent        BrocotSequence.push_back(considered_element + precedent);                 // adding next considered element        BrocotSequence.push_back(considered_element);    }     // printing sequence..    for (int i = 0; i < 15; ++i)        cout << BrocotSequence[i] << " ";} int main(){    int n = 15;    vector<int> BrocotSequence;         // adding first two element    // in the sequence    BrocotSequence.push_back(1);    BrocotSequence.push_back(1);         SternSequenceFunc(BrocotSequence, n);     return 0;}
// Java program to print// Brocot Sequenceimport java.io.*;import java.util.*; class GFG {     static void SternSequenceFunc(Vector<Integer>                         BrocotSequence, int n){    // loop to create sequence    for (int i = 1; BrocotSequence.size() < n; i++)    {        int considered_element = BrocotSequence.get(i);        int precedent = BrocotSequence.get(i-1);         // adding sum of considered element and it's precedent        BrocotSequence.add(considered_element + precedent);                 // adding next considered element        BrocotSequence.add(considered_element);    }     // printing sequence..    for (int i = 0; i < 15; ++i)        System.out.print(BrocotSequence.get(i) + " ");}    // Driver code    public static void main (String[] args) {                 int n = 15;        Vector<Integer> BrocotSequence = new Vector<Integer>();                 // adding first two element        // in the sequence        BrocotSequence.add(1);        BrocotSequence.add(1);                 SternSequenceFunc(BrocotSequence, n);             }} // This code is contributed by Gitanjali.
# Python program to print# Brocot Sequenceimport math  def SternSequenceFunc(BrocotSequence, n):         # loop to create sequence    for i in range(1,  n):                 considered_element = BrocotSequence[i]        precedent = BrocotSequence[i-1]          # adding sum of considered        # element and it's precedent        BrocotSequence.append(considered_element + precedent)                  # adding next considered element        BrocotSequence.append(considered_element)           # printing sequence..    for i in range(0, 15):        print(BrocotSequence[i] , end=" ") # Driver coden = 15BrocotSequence = [] # adding first two element# in the sequenceBrocotSequence.append(1)BrocotSequence.append(1)          SternSequenceFunc(BrocotSequence, n) # This code is contributed by Gitanjali.
// C# program to print// Brocot Sequenceusing System;using System.Collections.Generic; class GFG{static void SternSequenceFunc(List<int>                 BrocotSequence, int n){    // loop to create sequence    for (int i = 1;             BrocotSequence.Count < n; i++)    {        int considered_element =                       BrocotSequence[i];        int precedent =                   BrocotSequence[i - 1];         // adding sum of considered        // element and it's precedent        BrocotSequence.Add(considered_element +                                    precedent);                 // adding next        // considered element        BrocotSequence.Add(                       considered_element);    }     // printing sequence..    for (int i = 0; i < 15; ++i)        Console.Write(                BrocotSequence[i] + " ");}// Driver codestatic void Main (){         int n = 15;    List<int> BrocotSequence =                    new List<int>();         // adding first two element    // in the sequence    BrocotSequence.Add(1);    BrocotSequence.Add(1);         SternSequenceFunc(BrocotSequence, n);}} // This code is contributed by// Manish Shaw(manishshaw1)
<?php// PHP program to// print Brocot Sequence function SternSequenceFunc(&$BrocotSequence, $n){    // loop to create sequence    for ($i = 1;         count($BrocotSequence) < $n;         $i++)    {        $considered_element =                    $BrocotSequence[$i];        $precedent = $BrocotSequence[$i - 1];         // adding sum of considered        // element and it's precedent        array_push($BrocotSequence,                   $considered_element +                   $precedent);                 // adding next        // considered element        array_push($BrocotSequence,                   $considered_element);    }         // printing sequence..    for ($i = 0; $i < 15; ++$i)        echo ($BrocotSequence[$i]." ");} // Driver code$n = 15;$BrocotSequence = array(); // adding first two element// in the sequencearray_push($BrocotSequence, 1);array_push($BrocotSequence, 1); SternSequenceFunc($BrocotSequence, $n); // This code is contributed by// Manish Shaw(manishshaw1)?>
<script> // Javascript program to print Brocot Sequence function SternSequenceFunc( BrocotSequence, n){    // loop to create sequence    for (var i = 1; BrocotSequence.length < n; i++)    {        var considered_element = BrocotSequence[i];        var precedent = BrocotSequence[i - 1];         // adding sum of considered element and it's precedent        BrocotSequence.push(considered_element + precedent);                 // adding next considered element        BrocotSequence.push(considered_element);    }     // printing sequence..    for (var i = 0; i < 15; ++i)        document.write( BrocotSequence[i] + " ");} var n = 15;var BrocotSequence = []; // adding first two element// in the sequenceBrocotSequence.push(1);BrocotSequence.push(1); SternSequenceFunc(BrocotSequence, n); // This code is contributed by rrrtnx.</script>
Output:  
1 1 2 1 3 2 3 1 4 3 5 2 5 3 4
References : Github 
manishshaw1
rrrtnx
series
Mathematical
Mathematical
series
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Algorithm to solve Rubik's Cube
Merge two sorted arrays with O(1) extra space
Program to print prime numbers from 1 to N.
Find next greater number with same set of digits
Segment Tree | Set 1 (Sum of given range)
Check if a number is Palindrome
Count ways to reach the n'th stair
Fizz Buzz Implementation
Count all possible paths from top left to bottom right of a mXn matrix
Product of Array except itself