There is N number of people at a party. Find the total number of handshakes such that a person can handshake only once.

**Examples:**

Input : 5 Output : 10 Input : 9 Output : 36

We can see a recursive nature in the problem.

// n-th person has (n-1) choices and after // n-th person chooses a person, problem // recurs for n-1. handshake(n) = (n-1) + handshake(n-1) // Base case handshake(0) = 0

Below is the implementation of the above recursive formula.

## C++

`// Recursive CPP program to count total` `// number of handshakes when a person` `// can shake hand with only one.` `#include <stdio.h>` `// function to find all possible handshakes` `int` `handshake(` `int` `n)` `{` ` ` `// when n becomes 0 that means all the` ` ` `// persons have done handshake with other` ` ` `if` `(n == 0)` ` ` `return` `0;` ` ` `else` ` ` `return` `(n - 1) + handshake(n - 1);` `}` `int` `main()` `{` ` ` `int` `n = 9;` ` ` `printf` `(` `"%d"` `, handshake(n));` ` ` `return` `0;` `}` |

## Java

`// Recursive Java program to` `// count total number of` `// handshakes when a person` `// can shake hand with only one.` `import` `java.io.*;` `class` `GFG` `{` `// function to find all` `// possible handshakes` `static` `int` `handshake(` `int` `n)` `{` ` ` `// when n becomes 0 that` ` ` `// means all the persons` ` ` `// have done handshake` ` ` `// with other` ` ` `if` `(n == ` `0` `)` ` ` `return` `0` `;` ` ` `else` ` ` `return` `(n - ` `1` `) + handshake(n - ` `1` `);` `}` `// Driver Code` `public` `static` `void` `main (String[] args)` `{` ` ` `int` `n = ` `9` `;` ` ` `System.out.print(handshake(n));` `}` `}` `// This code is contributed` `// by chandan_jnu` |

## Python3

`# Recursive Python program` `# to count total number of` `# handshakes when a person` `# can shake hand with only one.` `# function to find all` `# possible handshakes` `def` `handshake(n):` ` ` `# when n becomes 0 that means` ` ` `# all the persons have done` ` ` `# handshake with other` ` ` `if` `(n ` `=` `=` `0` `):` ` ` `return` `0` ` ` `else` `:` ` ` `return` `(n ` `-` `1` `) ` `+` `handshake(n ` `-` `1` `)` `# Driver Code` `n ` `=` `9` `print` `(handshake(n))` `# This code is contributed` `# by Shivi_Aggarwal` |

## C#

`// Recursive C# program to` `// count total number of` `// handshakes when a person` `// can shake hand with only one.` `using` `System;` `class` `GFG` `{` `// function to find all` `// possible handshakes` `static` `int` `handshake(` `int` `n)` `{` ` ` `// when n becomes 0 that` ` ` `// means all the persons` ` ` `// have done handshake` ` ` `// with other` ` ` `if` `(n == 0)` ` ` `return` `0;` ` ` `else` ` ` `return` `(n - 1) + handshake(n - 1);` `}` `// Driver Code` `public` `static` `void` `Main (String []args)` `{` ` ` `int` `n = 9;` ` ` `Console.WriteLine(handshake(n));` `}` `}` `// This code is contributed` `// by Arnab Kundu` |

## PHP

`<?php` `// Recursive PHP program to ` `// count total number of` `// handshakes when a person` `// can shake hand with only one.` `// function to find all` `// possible handshakes` `function` `handshake(` `$n` `)` `{` ` ` `// when n becomes 0 that means` ` ` `// all the persons have done` ` ` `// handshake with other` ` ` `if` `(` `$n` `== 0)` ` ` `return` `0;` ` ` `else` ` ` `return` `(` `$n` `- 1) + handshake(` `$n` `- 1);` `}` `// Driver Code` `$n` `= 9;` `echo` `(handshake(` `$n` `));` `// This code is contributed` `// by Shivi_Aggarwal` `?>` |

## Javascript

`<script>` ` ` `// Recursive JavaScript program to` ` ` `// count total number of` ` ` `// handshakes when a person` ` ` `// can shake hand with only one.` ` ` `// function to find all` ` ` `// possible handshakes` ` ` `function` `handshake(n) {` ` ` `// when n becomes 0 that` ` ` `// means all the persons` ` ` `// have done handshake` ` ` `// with other` ` ` `if` `(n === 0)` ` ` `return` `0;` ` ` `else` ` ` `return` `n - 1 + handshake(n - 1);` ` ` `}` ` ` `// Driver Code` ` ` `var` `n = 9;` ` ` `document.write(handshake(n));` `</script>` |

**Output:**

36

We can come up with a **direct formula** by expanding the recursion.

handshake(n) = (n-1) + handshake(n-1) = (n-1) + (n-2) + handshake(n-2) = (n-1) + (n-2) + .... 1 + 0 = n * (n - 1)/2

## C++

`// Recursive CPP program to count total` `// number of handshakes when a person` `// can shake hand with only one.` `#include <stdio.h>` `// function to find all possible handshakes` `int` `handshake(` `int` `n)` `{` ` ` `return` `n * (n - 1)/2;` `}` `int` `main()` `{` ` ` `int` `n = 9;` ` ` `printf` `(` `"%d"` `, handshake(n));` ` ` `return` `0;` `}` |

## Java

`// Recursive Java program to` `// count total number of` `// handshakes when a person` `// can shake hand with only one.` `class` `GFG` `{` `// function to find all` `// possible handshakes` `static` `int` `handshake(` `int` `n)` `{` ` ` `return` `n * (n - ` `1` `) / ` `2` `;` `}` `// Driver code` `public` `static` `void` `main(String args[])` `{` ` ` `int` `n = ` `9` `;` ` ` `System.out.println(handshake(n));` `}` `}` `// This code is contributed` `// by Arnab Kundu` |

## Python3

`# Recursive Python program` `# to count total number of` `# handshakes when a person` `# can shake hand with only one.` `# function to find all` `# possible handshakes` `def` `handshake(n):` ` ` ` ` `return` `int` `(n ` `*` `(n ` `-` `1` `) ` `/` `2` `)` `# Driver Code` `n ` `=` `9` `print` `(handshake(n))` ` ` `# This code is contributed` `# by Shivi_Aggarwal` |

## C#

`// Recursive C# program to` `// count total number of` `// handshakes when a person` `// can shake hand with only one.` `using` `System;` `class` `GFG` `{` ` ` `// function to find all` `// possible handshakes` `static` `int` `handshake(` `int` `n)` `{` ` ` `return` `n * (n - 1) / 2;` `}` `// Driver code` `static` `public` `void` `Main ()` `{` ` ` `int` `n = 9;` ` ` `Console.WriteLine(handshake(n));` `}` `}` `// This code is contributed by Sachin` |

## PHP

`<?php` `// Recursive PHP program to` `// count total number of` `// handshakes when a person` `// can shake hand with only one.` `// function to find all` `// possible handshakes` `function` `handshake(` `$n` `)` `{` ` ` `return` `$n` `* (` `$n` `- 1) / 2;` `}` `// Driver Code` `$n` `= 9;` `echo` `(handshake(` `$n` `));` `// This code is contributed` `// by Shivi_Aggarwal` `?>` |

## Javascript

`<script>` `// Recursive Javascript program to` `// count total number of` `// handshakes when a person` `// can shake hand with only one.` `// Function to find all` `// possible handshakes` `function` `handshake(n)` `{` ` ` `return` `n * parseInt((n - 1) / 2, 10);` `}` `// Driver code` `let n = 9;` `document.write(handshake(n));` `// This code is contributed by rameshtravel07` `</script>` |

**Output:**

36

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**