Golomb sequence

18 Feb, 2022
In mathematics, the Golomb sequence is a non-decreasing integer sequence where n-th term is equal to number of times n appears in the sequence.The first few values are 1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 5, ......
Explanation of few terms: Third term is 2, note that three appears 2 times. Second term is 2, note that two appears 2 times. Fourth term is 3, note that four appears 3 times.Given a positive integer n. The task is to find the first n terms of Golomb sequence. 
Examples : 
Input : n = 4
Output : 1 2 2 3

Input : n = 6
Output : 1 2 2 3 3 4
The recurrence relation to find the nth term of Golomb sequence: a(1) = 1 a(n + 1) = 1 + a(n + 1 – a(a(n)))
Below is the implementation using Recursion: 
C++
Java
Python3
C#
PHP
Javascript
// C++ Program to find first// n terms of Golomb sequence.#include <bits/stdc++.h>using namespace std; // Return the nth element// of Golomb sequenceint findGolomb(int n){    // base case    if (n == 1)        return 1;     // Recursive Step    return 1 + findGolomb(n -               findGolomb(findGolomb(n - 1)));} // Print the first n// term of Golomb Sequencevoid printGolomb(int n){    // Finding first n    // terms of Golomb Sequence.    for (int i = 1; i <= n; i++)        cout << findGolomb(i) << " ";} // Driver Codeint main(){    int n = 9;    printGolomb(n);    return 0;}
// Java Program to find first // n terms of Golomb sequence.import java.util.*; class GFG{    public static int findGolomb(int n)    {                 // base case        if (n == 1)            return 1;             // Recursive Step        return 1 + findGolomb(n -        findGolomb(findGolomb(n - 1)));    }              // Print the first n term of    // Golomb Sequence    public static void printGolomb(int n)    {                 // Finding first n terms of        // Golomb Sequence.        for (int i = 1; i <= n; i++)            System.out.print(findGolomb(i) +                                       " ");    }         // Driver Code    public static void main (String[] args)    {        int n = 9;                 printGolomb(n);    }} // This code is contributed by Akash Singh
# Python 3 Program to find first# n terms of Golomb sequence. # Return the nth element of# Golomb sequencedef findGolomb(n):     # base case    if (n == 1):        return 1     # Recursive Step    return 1 + findGolomb(n -    findGolomb(findGolomb(n - 1)))  # Print the first n term# of Golomb Sequencedef printGolomb(n):     # Finding first n terms of    # Golomb Sequence.    for i in range(1, n + 1):        print(findGolomb(i), end=" ") # Driver Coden = 9 printGolomb(n) # This code is contributed by# Smitha Dinesh Semwal
// C# Program to find first n // terms of Golomb sequence.using System; class GFG{         // Return the nth element    // of Golomb sequence    static int findGolomb(int n)    {                 // base case        if (n == 1)            return 1;             // Recursive Step        return 1 + findGolomb(n -        findGolomb(findGolomb(n - 1)));    }         // Print the first n term     // of Golomb Sequence    static void printGolomb(int n)    {        // Finding first n terms of        // Golomb Sequence.        for (int i = 1; i <= n; i++)            Console .Write(findGolomb(i) +                                     " ");    }         // Driver Code    public static void Main ()    {                 int n = 9;                 printGolomb(n);             }} // This code is contributed by vt_m
<?php// PHP Program to find first// n terms of Golomb sequence. // Return the nth element// of Golomb sequencefunction findGolomb($n){         // base case    if ($n == 1)        return 1;     // Recursive Step    return 1 + findGolomb($n -        findGolomb(findGolomb($n - 1)));} // Print the first n// term of Golomb Sequencefunction printGolomb($n){         // Finding first n terms    // of Golomb Sequence.    for ($i = 1; $i <= $n; $i++)        echo findGolomb($i) , " ";} // Driver Code$n = 9;printGolomb($n); // This code is contributed by anuj_67.?>
<script>// javascript Program to find first // n terms of Golomb sequence.     function findGolomb(n)    {         // base case        if (n == 1)            return 1;         // Recursive Step        return 1 + findGolomb(n - findGolomb(findGolomb(n - 1)));    }     // Print the first n term of    // Golomb Sequence    function printGolomb(n)    {         // Finding first n terms of        // Golomb Sequence.        for (let i = 1; i <= n; i++)            document.write(findGolomb(i) + " ");    }     // Driver Code       var n = 9;    printGolomb(n); // This code is contributed by Amit Katiyar</script>
1 2 2 3 3 4 4 4 5
 
Below is the implementation using Dynamic Programming: 
C++
Java
Python3
C#
PHP
Javascript
// C++ Program to find first// n terms of Golomb sequence.#include <bits/stdc++.h>using namespace std; // Print the first n term// of Golomb Sequencevoid printGolomb(int n){    int dp[n + 1];     // base cases    dp[1] = 1;    cout << dp[1] << " ";     // Finding and printing first    // n terms of Golomb Sequence.    for (int i = 2; i <= n; i++)    {        dp[i] = 1 + dp[i - dp[dp[i - 1]]];        cout << dp[i] << " ";    }}// Driver Codeint main(){    int n = 9;     printGolomb(n);    return 0;}
// Java Program to find first// n terms of Golomb sequence.import java.util.*; class GFG{         public static void printGolomb(int n)    {        int dp[] = new int[n + 1];             // base cases        dp[1] = 1;        System.out.print(dp[1] + " ");             // Finding and printing first n        // terms of Golomb Sequence.        for (int i = 2; i <= n; i++)        {            dp[i] = 1 + dp[i - dp[dp[i - 1]]];                     System.out.print(dp[i] + " ");        }    }             // Driver code    public static void main (String[] args)    {        int n = 9;                 printGolomb(n);    }} // This code is contributed by Akash Singh
# Python3 Program to find first# n terms of Golomb sequence. # Print the first n term# of Golomb Sequencedef Golomb( n):     dp = [0] * (n + 1)     # base cases    dp[1] = 1    print(dp[1], end = " " )     # Finding and print first    # n terms of Golomb Sequence.    for i in range(2, n + 1):             dp[i] = 1 + dp[i - dp[dp[i - 1]]]        print(dp[i], end = " ")     # Driver Coden = 9 Golomb(n) # This code is contributed by ash264
// C# Program to find first n// terms of Golomb sequence.using System; class GFG{         // Print the first n term of    // Golomb Sequence    static void printGolomb(int n)    {        int []dp = new int[n + 1];             // base cases        dp[1] = 1;        Console.Write(dp[1] + " ");             // Finding and printing first n        // terms of Golomb Sequence.        for (int i = 2; i <= n; i++)        {            dp[i] = 1 + dp[i - dp[dp[i - 1]]];            Console.Write( dp[i] + " ");        }    }         // Driver Code    public static void Main ()    {                 int n = 9;                 printGolomb(n);    }} // This code is contributed by vt_m
<?php// PHP Program to find first// n terms of Golomb sequence. // Print the first n term// of Golomb Sequencefunction printGolomb($n){    // base cases    $dp[1] = 1;    echo $dp[1], " ";     // Finding and printing first    // n terms of Golomb Sequence.    for ($i = 2; $i <= $n; $i++)    {        $dp[$i] = 1 + $dp[$i -                          $dp[$dp[$i - 1]]];        echo $dp[$i], " ";    }}// Driver Code$n = 9; printGolomb($n); // This code is contributed by ajit.?>
<script>// Javascript Program to find first// n terms of Golomb sequence.   // Print the first n term// of Golomb Sequence     function printGolomb( n) {        let dp = Array(n + 1).fill(0);         // base cases        dp[1] = 1;        document.write(dp[1] + " ");         // Finding and printing first n        // terms of Golomb Sequence.        for ( i = 2; i <= n; i++) {            dp[i] = 1 + dp[i - dp[dp[i - 1]]];             document.write(dp[i] + " ");        }    }     // Driver code              let n = 9;         printGolomb(n);         // This code is contributed by shikhasingrajput </script>
1 2 2 3 3 4 4 4 5
 
Smitha Dinesh Semwal
vt_m
jit_t
ash264
shikhasingrajput
amit143katiyar
surinderdawra388
simranarora5sos
varshagumber28
series
Dynamic Programming
Dynamic Programming
series
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.