Número de apretones de manos tales que una persona da la mano solo una vez

Hay N número de personas en una fiesta. Encuentre el número total de apretones de manos tales que una persona pueda dar un apretón de manos solo una vez.

Ejemplos: 

Input : 5
Output : 10

Input : 9
Output : 36 

Podemos ver una naturaleza recursiva en el problema. 

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

A continuación se muestra la implementación de la fórmula recursiva anterior. 

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>
Producción: 

36

 

Podemos llegar a una fórmula directa expandiendo la recursividad. 

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>
Producción: 

36

 

Publicación traducida automáticamente

Artículo escrito por Mohd_Saliem y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *