# Print a pattern without using any loop

Given a number n, print following a pattern without using any loop.

Examples :

```Input: n = 16
Output: 16, 11, 6, 1, -4, 1, 6, 11, 16

Input: n = 10
Output: 10, 5, 0, 5, 10
```

We basically first reduce 5 one by one until we reach a negative or 0. After we reach 0 or negative, we one add 5 until we reach n.

## We strongly recommend that you click here and practice it, before moving on to the solution.

The idea is to use recursion. It is an interesting question to try on your own.

Below is the Code. The code uses a flag variable to indicate whether we are moving toward 0 or we are moving toward the back to n.

## C++

 `// C++ program to print pattern that first reduces 5 one  ` `// by one, then adds 5. Without any loop ` `#include ` `using` `namespace` `std; ` ` `  `// Recursive function to print the pattern. ` `// n indicates input value ` `// m indicates current value to be printed ` `// flag indicates whether we need to add 5 or ` `// subtract 5.  Initially flag is true. ` `void` `printPattern(``int` `n, ``int` `m, ``bool` `flag) ` `{ ` `    ``// Print m. ` `    ``cout << m << ``" "``; ` `    `  `    ``// If we are moving back toward the n and ` `    ``// we have reached there, then we are done ` `    ``if` `(flag == ``false` `&& n ==m) ` `        ``return``;   ` `    `  `    ``// If we are moving toward 0 or negative. ` `    ``if` `(flag) ` `    ``{ ` `      ``// If m is greater, then 5, recur with true flag ` `      ``if` `(m-5 > 0)  ` `         ``printPattern(n, m-5, ``true``); ` `      ``else` `// recur with false flag ` `         ``printPattern(n, m-5, ``false``); ` `    ``} ` `    ``else` `// If flag is false. ` `         ``printPattern(n, m+5, ``false``); ` `} ` ` `  `// Recursive function to print the pattern ` `// variance where m is the input int32 value ` `void` `PrintPattern(``int` `m) ` `{ ` `    ``if` `(m > 0) ` `    ``{ ` `        ``cout << m << ``'\n'``; ` `        ``PrintPattern(m - 5); ` `    ``} ` ` `  `    ``cout << m << ``'\n'``; ` `} ` ` `  `// Driver Program ` `int` `main() ` `{ ` `     ``int` `n = 16; ` `     ``//printPattern(n, n, true); ` `     ``PrintPattern(n); ` `    ``return` `0; ` `} `

## Java

 `// Java program to print pattern that first reduces 5 one ` `// by one, then adds 5. Without any loop ` `import` `java.io.*; ` ` `  `class` `GFG { ` `     `  `    ``// Recursive function to print the pattern. ` `    ``// n indicates input value ` `    ``// m indicates current value to be printed ` `    ``// flag indicates whether we need to add 5 or ` `    ``// subtract 5. Initially flag is true. ` `    ``static` `void` `printPattern(``int` `n, ``int` `m, ``boolean` `flag) ` `    ``{ ` `         `  `        ``// Print m. ` `        ``System.out.print(m + ``" "``); ` ` `  `        ``// If we are moving back toward the n and ` `        ``// we have reached there, then we are done ` `        ``if` `(flag == ``false` `&& n == m) ` `            ``return``; ` ` `  `        ``// If we are moving toward 0 or negative. ` `        ``if` `(flag) { ` ` `  `            ``// If m is greater, then 5, recur with  ` `            ``// true flag ` `            ``if` `(m - ``5` `> ``0``) ` `                ``printPattern(n, m - ``5``, ``true``); ` ` `  `            ``else` `// recur with false flag ` `                ``printPattern(n, m - ``5``, ``false``); ` `        ``} ` ` `  `        ``else` `// If flag is false. ` `            ``printPattern(n, m + ``5``, ``false``); ` `    ``} ` ` `  `    ``// Driver Program ` `    ``public` `static` `void` `main(String[] args) ` `    ``{ ` `        ``int` `n = ``16``; ` `        ``printPattern(n, n, ``true``); ` `    ``} ` `} ` `// This code is contributed by vt_m `

## Python3

 `# Python program to print pattern  ` `# that first reduces 5 one by one, ` `# then adds 5. Without any loop. ` ` `  `# Recursive function to print  ` `# the pattern.n indicates  ` `# input value m indicates  ` `# current value to be printed ` `# flag indicates whether we  ` `# need to add 5 or subtract 5. ` `# Initially flag is True. ` `def` `printPattern(n, m, flag): ` `     `  `    ``# Print m. ` `    ``print``(m) ` `     `  `    ``# If we are moving back  ` `    ``# toward the n and we  ` `    ``# have reached there, ` `    ``# then we are done ` `    ``if` `flag ``=``=` `False` `and` `n ``=``=` `m: ` `        ``return` `    ``# If we are moving  ` `    ``# toward 0 or negative. ` `    ``if` `flag: ` `    ``# If m is greater, then 5,  ` `    ``# recur with true flag ` `        ``if` `m ``-` `5` `> ``0``:  ` `            ``printPattern(n, m ``-` `5``, ``True``) ` `        ``else``: ``# recur with false flag ` `            ``printPattern(n, m ``-` `5``, ``False``) ` `    ``else``: ``# If flag is false. ` `        ``printPattern(n, m ``+` `5``, ``False``) ` ` `  `# Driver Code ` `n ``=` `16` `printPattern(n, n, ``True``) ` ` `  `# This code is contributed  ` `# by HrushikeshChoudhary `

## C#

 `// C# program to print pattern that first reduces 5 one ` `// by one, then adds 5. Without any loop ` `using` `System; ` ` `  `class` `GFG { ` `     `  `    ``// Recursive function to print the pattern. ` `    ``// n indicates input value ` `    ``// m indicates current value to be printed ` `    ``// flag indicates whether we need to add 5 or ` `    ``// subtract 5. Initially flag is true. ` `    ``static` `void` `printPattern(``int` `n, ``int` `m, ``bool` `flag) ` `    ``{ ` `         `  `        ``// Print m. ` `        ``Console.Write(m + ``" "``); ` ` `  `        ``// If we are moving back toward the n and ` `        ``// we have reached there, then we are done ` `        ``if` `(flag == ``false` `&& n == m) ` `            ``return``; ` ` `  `        ``// If we are moving toward 0 or negative. ` `        ``if` `(flag) { ` ` `  `            ``// If m is greater, then 5, recur with  ` `            ``// true flag ` `            ``if` `(m - 5 > 0) ` `                ``printPattern(n, m - 5, ``true``); ` ` `  `            ``else` `// recur with false flag ` `                ``printPattern(n, m - 5, ``false``); ` `        ``} ` ` `  `        ``else` `// If flag is false. ` `            ``printPattern(n, m + 5, ``false``); ` `    ``} ` ` `  `    ``// Driver Program ` `    ``public` `static` `void` `Main() ` `    ``{ ` `        ``int` `n = 16; ` `        ``printPattern(n, n, ``true``); ` `    ``} ` `} ` `// This code is contributed by vt_m `

## PHP

 ` 0)  ` `        ``printPattern(``\$n``, ``\$m` `- 5, true); ` `     `  `    ``// recur with false flag ` `    ``else`  `        ``printPattern(``\$n``, ``\$m` `- 5, false); ` `    ``} ` `     `  `    ``// If flag is false. ` `    ``else`  `        ``printPattern(``\$n``, ``\$m` `+ 5, false); ` `} ` ` `  `// Driver Code ` `\$n` `= 16; ` `printPattern(``\$n``, ``\$n``, true); ` ` `  `// This code is conntributed by m_kit ` `?> `

Output :

`16, 11, 6, 1, -4, 1, 6, 11, 16`

How to print above pattern without any extra variable and loop?
The above program works fine and prints the desired out but uses extra variables. We can use two print statements. First one before the recursive call that prints all decreasing sequence. The second one after the recursive call to print increasing sequence. Below is the implementation of the idea.

## C++

 `// C++ program to print pattern that first reduces 5 one  ` `// by one, then adds 5. Without any loop an extra variable. ` `#include ` `using` `namespace` `std; ` ` `  `// Recursive function to print the pattern without any extra ` `// variable ` `void` `printPattern(``int` `n) ` `{ ` `     ``// Base case (When n becomes 0 or negative)   ` `     ``if` `(n ==0 || n<0) ` `     ``{ ` `        ``cout << n << ``" "``; ` `        ``return``;   ` `     ``} ` `    `  `     ``// First print decreasing order ` `     ``cout << n << ``" "``; ` `     ``printPattern(n-5); ` ` `  `     ``// Then print increasing order ` `     ``cout << n << ``" "``;    ` `} ` ` `  `// Driver Program ` `int` `main() ` `{ ` `     ``int` `n = 16; ` `     ``printPattern(n); ` `    ``return` `0; ` `} `

## Java

 `// Java program to print pattern that first  ` `// reduces 5 one by one, then adds 5.  ` `// Without any loop an extra variable. ` ` `  `import` `java.io.*; ` ` `  `class` `GFG { ` `     `  `    ``// Recursive function to print the  ` `    ``// pattern without any extra variable ` `    ``static` `void` `printPattern(``int` `n) ` `    ``{ ` `         `  `        ``// Base case (When n becomes 0 or  ` `        ``// negative) ` `        ``if` `(n == ``0` `|| n < ``0``) { ` `             `  `            ``System.out.print(n + ``" "``); ` `             `  `            ``return``; ` `        ``} ` ` `  `        ``// First print decreasing order ` `        ``System.out.print(n + ``" "``); ` `         `  `        ``printPattern(n - ``5``); ` ` `  `        ``// Then print increasing order ` `        ``System.out.print(n + ``" "``); ` `    ``} ` ` `  `    ``// Driver Program ` `    ``public` `static` `void` `main(String[] args) ` `    ``{ ` `         `  `        ``int` `n = ``16``; ` `         `  `        ``printPattern(n); ` `    ``} ` `} ` ` `  `// This code is contributed by vt_m `

## Python3

 `# Python3 program to print pattern that  ` `# first reduces 5 one by one, then adds 5. ` `# Without any loop an extra variable. ` ` `  `# Recursive function to print the pattern  ` `# without any extra variable ` `def` `printPattern(n): ` ` `  `    ``# Base case (When n becomes 0 or negative)  ` `    ``if` `(n ``=``=` `0` `or` `n < ``0``): ` `        ``print``(n, end ``=` `", "``) ` `        ``return` `     `  `    ``# First print decreasing order ` `    ``print``(n, end ``=` `", "``) ` `    ``printPattern(n ``-` `5``) ` ` `  `    ``# Then print increasing order ` `    ``print``(n, end ``=` `", "``)  ` ` `  `# Driver Code ` `n ``=` `16` `printPattern(n) ` ` `  `# This code is contributed by ` `# Mohit kumar 29 `

## C#

 `// C# program to print pattern that first  ` `// reduces 5 one by one, then adds 5.  ` `// Without any loop an extra variable. ` ` `  `using` `System; ` ` `  `class` `GFG { ` `     `  `    ``// Recursive function to print the  ` `    ``// pattern without any extra variable ` `    ``static` `void` `printPattern(``int` `n) ` `    ``{ ` `         `  `        ``// Base case (When n becomes 0 or  ` `        ``// negative) ` `        ``if` `(n == 0 || n < 0) { ` `             `  `             ``Console.Write(n + ``" "``); ` `             `  `            ``return``; ` `        ``} ` ` `  `        ``// First print decreasing order ` `          ``Console.Write(n + ``" "``); ` `         `  `        ``printPattern(n - 5); ` ` `  `        ``// Then print increasing order ` `           ``Console.Write(n + ``" "``); ` `    ``} ` ` `  `    ``// Driver Program ` `    ``public` `static` `void` `Main() ` `    ``{ ` `         `  `        ``int` `n = 16; ` `         `  `        ``printPattern(n); ` `    ``} ` `} ` ` `  `// This code is contributed by vt_m `

## PHP

 ` `

Output:

`16, 11, 6, 1, -4, 1, 6, 11, 16`

Thanks to AKSHAY RATHORE for suggesting the above solution.