Number of handshakes such that a person shakes hands only once

There are N number of persons in a party, find the total number of handshake 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 implementation of above recursive formula.

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


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

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


Output:

36


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

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.