# Print all Increasing Subsequence of a List

Given a list or array of integer, the task is to print all such subsequences of this list such in which the elements are arranged in increasing order.

A *Subsequence* of the list is an ordered subset of that list’s element having same sequential ordering as the original list.

**Examples:**

Input:arr = {1, 2]}

Output:

2

1

1 2

Input:arr = {1, 3, 2}

Output:

2

3

1

1 2

1 3

**Approach: **

- Here, we will use recursion to find the desired output.
- The function will take two lists as an argument and the base condition will be until the list is empty.
- At each step of recursion, we will make the decision whether to include or exclude a particular element of the original list.
- For achieving this, we will maintain two list namely
**inp**and**out**, the input and output list of that step. - While including an element in output list, we will check whether that element is greater than the last element in output list, if yes then we will include that element.
- When the length of the input list becomes zero then the output list will contain the desired output. This is also a base condition too.

Below is the implementation of the above approach:

`# Python3 implementation ` `# To store all increasing subsequence of the given list ` `st ` `=` `[] ` ` ` `# Method to find increasing subsequence ` `def` `find(inp, out) : ` ` ` `if` `len` `(inp)` `=` `=` `0` `: ` ` ` `if` `len` `(out) !` `=` `0` `: ` ` ` `# storing result ` ` ` `st.append(out) ` ` ` `return` ` ` ` ` `# excluding 1st element ` ` ` `find(inp[` `1` `:], out[:]) ` ` ` ` ` `# including first element ` ` ` `# checking the condition ` ` ` `# for increasing subsequence ` ` ` `if` `len` `(out)` `=` `=` `0` `: ` ` ` `find(inp[` `1` `:], inp[:` `1` `]) ` ` ` `elif` `inp[` `0` `] > out[` `-` `1` `] : ` ` ` `out.append(inp[` `0` `]) ` ` ` `find(inp[` `1` `:], out[:]) ` ` ` `# The input list ` `ls1 ` `=` `[` `1` `, ` `3` `, ` `2` `] ` `ls2 ` `=` `[] ` ` ` `# Calling the function ` `find(ls1, ls2) ` ` ` `# Printing the lists ` `for` `i ` `in` `st: ` ` ` `print` `(` `*` `i) ` |

*chevron_right*

*filter_none*

**Output:**

2 3 1 1 2 1 3

**Time Complexity**: .

## Recommended Posts:

- Longest Increasing Subsequence using BIT
- Maximum Sum Increasing Subsequence | DP-14
- Longest Increasing Odd Even Subsequence
- Construction of Longest Increasing Subsequence (N log N)
- Maximum product of an increasing subsequence
- Printing Maximum Sum Increasing Subsequence
- Longest Increasing consecutive subsequence
- Longest Increasing Subsequence Size (N log N)
- Longest Common Increasing Subsequence (LCS + LIS)
- Python program for Longest Increasing Subsequence
- Maximum product of an increasing subsequence of size 3
- Printing longest Increasing consecutive subsequence
- Largest increasing subsequence of consecutive integers
- Find the Increasing subsequence of length three with maximum product
- Construction of Longest Increasing Subsequence(LIS) and printing LIS sequence

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.