Related Articles
Thue-Morse sequence
• Difficulty Level : Easy
• Last Updated : 05 Apr, 2021

Thue–Morse sequence, or Prouhet–Thue–Morse sequence, is an infinite binary sequence of 0s and 1s. The sequence is obtained by starting with 0 and successively appending the Boolean complement of the sequence obtained so far.
First few steps :

Start with 0
Append complement of 0, we get 01
Append complement of 01, we get 0110
Append complement of 0110, we get 01101001

Given a whole number n. The task is to find the nth string formed of by Thue–Morse sequence i.e prefix of length 2n-1 of Thue–Morse sequence.
Examples:

```Input : n = 4
Output : 01101001
We get 0, 01, 0110 and 01101001
in fourth iteration.

Input : n = 3
Output : 0110```

The idea is to initialize the output string with 0, then run a loop n – 1 times and for each iteration find the complement of the string and append it to the string.
Below is implementation of this approach:

## C++

 `// CPP Program to find nth term of Thue-Morse sequence.``#include ``using` `namespace` `std;` `// Return the complement of the binary string.``string complement(string s)``{``    ``string comps;` `    ``// finding the complement of the string.``    ``for` `(``int` `i = 0; i < s.length(); i++) {` `        ``// if character is 0, append 1``        ``if` `(s.at(i) == ``'0'``)``            ``comps += ``'1'``;` `        ``// if character is 1, append 0.``        ``else``            ``comps += ``'0'``;``    ``}` `    ``return` `comps;``}` `// Return the nth term of Thue-Morse sequence.``string nthTerm(``int` `n)``{``    ``// Initialing the string to 0``    ``string s = ``"0"``;` `    ``// Running the loop for n - 1 time.``    ``for` `(``int` `i = 1; i < n; i++)` `        ``// appending the complement of``        ``// the string to the string.``        ``s += complement(s);``    `  `    ``return` `s;``}``// Driven Program``int` `main()``{``    ``int` `n = 4;``    ``cout << nthTerm(n) << endl;``    ``return` `0;``}`

## Java

 `// Java Program to find nth``// term of Thue-Morse sequence.` `class` `GFG``{``    ``// Return the complement``    ``// of the binary String.``    ``static` `String complement(String s)``    ``{``        ``String comps = ``""``;``    ` `        ``// finding the complement``        ``// of the String.``        ``for` `(``int` `i = ``0``; i < s.length(); i++)``        ``{``    ` `            ``// if character is 0,``            ``// append 1``            ``if` `(s.charAt(i) == ``'0'``)``                ``comps += ``'1'``;``    ` `            ``// if character is 1,``            ``// append 0.``            ``else``                ``comps += ``'0'``;``        ``}``    ` `        ``return` `comps;``    ``}``    ` `    ``// Return the nth term``    ``// of Thue-Morse sequence.``    ``static` `String nthTerm(``int` `n)``    ``{``        ``// Initialing the``        ``// String to 0``        ``String s = ``"0"``;``    ` `        ``// Running the loop``        ``// for n - 1 time.``        ``for` `(``int` `i = ``1``; i < n; i++)``    ` `            ``// appending the complement of``            ``// the String to the String.``            ``s += complement(s);``        ` `    ` `        ``return` `s;``    ``}``    ` `    ``// Driven Code``public` `static` `void` `main(String[] args)``    ``{``        ``int` `n = ``4``;``        ``System.out.print(nthTerm(n));``    ``}``}` `// This code is contributed by``// mits`

## Python3

 `# Python3 Program to find nth term of``# Thue-Morse sequence.` `# Return the complement of the``# binary string.``def` `complement(s):``    ``comps ``=` `"";` `    ``# finding the complement``    ``# of the string.``    ``for` `i ``in` `range``(``len``(s)):` `        ``# if character is 0, append 1``        ``if` `(s[i] ``=``=` `'0'``):``            ``comps ``+``=` `'1'``;` `        ``# if character is 1, append 0.``        ``else``:``            ``comps ``+``=` `'0'``;` `    ``return` `comps;` `# Return the nth term of``# Thue-Morse sequence.``def` `nthTerm(n):` `    ``# Initialing the string to 0``    ``s ``=` `"0"``;` `    ``# Running the loop for n - 1 time.``    ``for` `i ``in` `range``(``1``, n):` `        ``# appending the complement of``        ``# the string to the string.``        ``s ``+``=` `complement(s);``    ` `    ``return` `s;` `# Driver Code``n ``=` `4``;``print``(nthTerm(n));` `# This code is contributed``# by mits`

## C#

 `// C# Program to find nth``// term of Thue-Morse sequence.``using` `System;` `class` `GFG``{``    ``// Return the complement``    ``// of the binary string.``    ``static` `string` `complement(``string` `s)``    ``{``        ``string` `comps = ``""``;``    ` `        ``// finding the complement``        ``// of the string.``        ``for` `(``int` `i = 0; i < s.Length; i++)``        ``{``    ` `            ``// if character is 0,``            ``// append 1``            ``if` `(s[i] == ``'0'``)``                ``comps += ``'1'``;``    ` `            ``// if character is 1,``            ``// append 0.``            ``else``                ``comps += ``'0'``;``        ``}``    ` `        ``return` `comps;``    ``}``    ` `    ``// Return the nth term``    ``// of Thue-Morse sequence.``    ``static` `string` `nthTerm(``int` `n)``    ``{``        ``// Initialing the``        ``// string to 0``        ``string` `s = ``"0"``;``    ` `        ``// Running the loop``        ``// for n - 1 time.``        ``for` `(``int` `i = 1; i < n; i++)``    ` `            ``// appending the complement of``            ``// the string to the string.``            ``s += complement(s);``        ` `    ` `        ``return` `s;``    ``}``    ` `    ``// Driven Code``    ``static` `void` `Main()``    ``{``        ``int` `n = 4;``        ``Console.Write(nthTerm(n));``    ``}``}` `// This code is contributed by``// Manish Shaw(manishshaw1)`

## PHP

 ``

## C++

 `#include ``using` `namespace` `std;` `int` `main() {` `    ``cout<<``"GFG!"``;``    ``return` `0;``}`

## Javascript

 ``

Output:

`01101001`

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up