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)
Recommended Articles