Open In App

Number of handshakes such that a person shakes hands only once

Improve
Improve
Like Article
Like
Save
Share
Report

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 C++ program to count total number of handshakes
// when a person can shake hand with only one.
#include <bits/stdc++.h>
using namespace std;
 
// 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);
}
 
// Driver code
int main()
{
    int n = 9;
    cout << " " << handshake(n);
    return 0;
}
 
// This code is contributed by Aditya Kumar (adityakumar129)


C




// Recursive C 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;
}
 
// This code is contributed by Aditya Kumar (adityakumar129)


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 Aditya Kumar (adityakumar129)


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

 

Time Complexity: O(n)
Auxiliary Space: O(1), As the function is tail recursive the extra stack space will not be used.

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 <bits/stdc++.h>
using namespace std;
 
// function to find all possible handshakes
int handshake(int n) { return n * (n - 1) / 2; }
 
int main()
{
    int n = 9;
    cout << handshake(n) << endl;
    return 0;
}
 
// This code is contributed by Aditya Kumar (adityakumar129)


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;
}
 
// This code is contributed by Aditya Kumar (adityakumar129)


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 Aditya Kumar (adityakumar129)


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

 

Time Complexity: O(1)
Auxiliary Space: O(1)



Last Updated : 28 Dec, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads