Given a number N, the task is to count all possible combinations of pairs formed using adjacent elements.**Note**: If an element exists already in a pair, it cannot be picked in the next pair. For example: for {1,2,3}: {1,2} and {2,3} will not be considered as a correct combination.**Examples:**

Input :N = 4Output :5Explanation :If N = 4, the possible combinations are: {1}, {2}, {3}, {4} {1, 2}, {3, 4} {1}, {2, 3}, {4} {1}, {2}, {3, 4} {1, 2}, {3}, {4}Input :N = 5Output :8

**Approach : **Break the problem into smaller subproblems. If there are N numbers, and there are two cases either a number is alone, or it is in a pair, if a number is alone, find the ways of pairing (n-1) numbers left, or if it is in a pair, find the ways of pairing (n-2) numbers left. If there are just 2 numbers left they can generate 2 combinations either alone or in a pair, and if a single number is left it will be in singleton, so there is just 1 combination.

Below is the implementation of the above approach:

## C++

`#include <bits/stdc++.h>` `using` `namespace` `std;` `// Function to count the number of ways` `int` `ways(` `int` `n)` `{` ` ` `// If there is a single number left` ` ` `// it will form singleton` ` ` `if` `(n == 1) {` ` ` `return` `1;` ` ` `}` ` ` `// if there are just 2 numbers left,` ` ` `// they will form a pair` ` ` `if` `(n == 2) {` ` ` `return` `2;` ` ` `}` ` ` `else` `{` ` ` `return` `ways(n - 1) + ways(n - 2);` ` ` `}` `}` `// Driver Code` `int` `main()` `{` ` ` `int` `n = 5;` ` ` `cout << ` `"Number of ways = "` `<< ways(n);` ` ` `return` `0;` `}` |

## Java

`/*package whatever //do not write package name here */` `import` `java.io.*;` `class` `GFG` `{` ` ` `// Function to count the number of ways` `static` `int` `ways(` `int` `n)` `{` ` ` `// If there is a single number left` ` ` `// it will form singleton` ` ` `if` `(n == ` `1` `)` ` ` `{` ` ` `return` `1` `;` ` ` `}` ` ` ` ` `// if there are just 2 numbers left,` ` ` `// they will form a pair` ` ` `if` `(n == ` `2` `)` ` ` `{` ` ` `return` `2` `;` ` ` `}` ` ` `else` ` ` `{` ` ` `return` `ways(n - ` `1` `) + ways(n - ` `2` `);` ` ` `}` `}` `// Driver Code` `public` `static` `void` `main (String[] args)` `{` ` ` `int` `n = ` `5` `;` ` ` ` ` `System.out.println(` `"Number of ways = "` `+ ways(n));` `}` `}` |

## Python3

`# Python3 code implementation of the above program` `# Function to count the number of ways` `def` `ways(n) :` ` ` ` ` `# If there is a single number left` ` ` `# it will form singleton` ` ` `if` `(n ` `=` `=` `1` `) :` ` ` `return` `1` `;` ` ` ` ` `# if there are just 2 numbers left,` ` ` `# they will form a pair` ` ` `if` `(n ` `=` `=` `2` `) :` ` ` `return` `2` `;` ` ` ` ` `else` `:` ` ` `return` `ways(n ` `-` `1` `) ` `+` `ways(n ` `-` `2` `);` `# Driver Code` `if` `__name__ ` `=` `=` `"__main__"` `:` ` ` `n ` `=` `5` `;` ` ` `print` `(` `"Number of ways = "` `, ways(n));` `# This code is contributed by AnkitRai01` |

## C#

`// C# implementation of the above code` `using` `System;` `class` `GFG` `{` ` ` `// Function to count the number of ways` `static` `int` `ways(` `int` `n)` `{` ` ` `// If there is a single number left` ` ` `// it will form singleton` ` ` `if` `(n == 1)` ` ` `{` ` ` `return` `1;` ` ` `}` ` ` ` ` `// if there are just 2 numbers left,` ` ` `// they will form a pair` ` ` `if` `(n == 2)` ` ` `{` ` ` `return` `2;` ` ` `}` ` ` `else` ` ` `{` ` ` `return` `ways(n - 1) + ways(n - 2);` ` ` `}` `}` `// Driver Code` `public` `static` `void` `Main()` `{` ` ` `int` `n = 5;` ` ` ` ` `Console.WriteLine(` `"Number of ways = "` `+ ways(n));` `}` `}` `// This code is contributed by AnkitRai01` |

## Javascript

`<script>` ` ` `// Javascript implementation of the above code` ` ` ` ` `// Function to count the number of ways` ` ` `function` `ways(n)` ` ` `{` ` ` `// If there is a single number left` ` ` `// it will form singleton` ` ` `if` `(n == 1)` ` ` `{` ` ` `return` `1;` ` ` `}` ` ` `// if there are just 2 numbers left,` ` ` `// they will form a pair` ` ` `if` `(n == 2)` ` ` `{` ` ` `return` `2;` ` ` `}` ` ` `else` ` ` `{` ` ` `return` `ways(n - 1) + ways(n - 2);` ` ` `}` ` ` `}` ` ` ` ` `let n = 5;` ` ` ` ` `document.write(` `"Number of ways = "` `+ ways(n));` `// This code is contributed by suresh07.` `</script>` |

**Output:**

Number of ways = 8

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the **DSA Self Paced Course** at a student-friendly price and become industry ready. To complete your preparation from learning a language to DS Algo and many more, please refer **Complete Interview Preparation Course****.**

In case you wish to attend live classes with industry experts, please refer **Geeks Classes Live** and **Geeks Classes Live USA**