Skip to content
Related Articles

Related Articles

Improve Article
Number of handshakes such that a person shakes hands only once
  • Difficulty Level : Basic
  • Last Updated : 17 Jun, 2021

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




My Personal Notes arrow_drop_up
Recommended Articles
Page :