Dada una función mcd(a, b) para encontrar el MCD (máximo común divisor) de dos números. También se sabe que el GCD de tres elementos se puede encontrar mediante gcd(a, gcd(b, c)), de manera similar, para cuatro elementos se puede encontrar el GCD mediante gcd(a, gcd(b, gcd(c, d)) ). Dado un entero positivo n . La tarea es imprimir la fórmula para encontrar el GCD de n entero usando la función gcd() dada.
Ejemplos :
Input : n = 3 Output : gcd(int, gcd(int, int)) Input : n = 5 Output : gcd(int, gcd(int, gcd(int, gcd(int, int))))
Enfoque: la idea es utilizar la recursividad para imprimir el comando de una sola línea. Ahora, para escribir una función recursiva, digamos recursiveFun(n), la string requerida se compone de mcd(int, + recursiveFun(n – 1) + ). Esto significa que recursiveFun(n) debe devolver una string que contiene una llamada a sí misma y para evaluar ese valor, la función recursiva comenzará de nuevo para n – 1. Esto, a su vez, devolverá otra string con una llamada a n – 1 y así hasta que n == 1 y la función recursiva en su lugar devuelve la string “int”.
A continuación se muestra la implementación del enfoque anterior:
C++
// CPP Program to print single line command // to find the GCD of n integers #include <bits/stdc++.h> using namespace std; // Function to print single line command // to find GCD of n elements. string recursiveFun(int n) { // base case if (n == 1) return "int"; // Recursive Step return "gcd(int, " + recursiveFun(n - 1) + ")"; } // Driver Program int main() { int n = 5; cout << recursiveFun(n) << endl; return 0; }
Java
// Java Program to print // single line command to // find the GCD of n integers class GFG { // Function to print single // line command to find GCD // of n elements. static String recursiveFun(int n) { // base case if (n == 1) return "int"; // Recursive Step return "gcd(int, " + recursiveFun(n - 1) + ")"; } // Driver Code public static void main(String [] arg) { int n = 5; System.out.println(recursiveFun(n)); } } // This code is contributed // by Smitha
Python3
# Python 3 Program to print single line # command to find the GCD of n integers # Function to print single line command # to find GCD of n elements. def recursiveFun(n): # base case if (n == 1): return "int" # Recursive Step return "gcd(int, " + recursiveFun(n - 1) + ")" # Driver Code if __name__ == '__main__': n = 5 print(recursiveFun(n)) # This code is contributed # by PrinciRaj1992
C#
// C# Program to print single // line command to find the // GCD of n integers using System; class GFG { // Function to print single // line command to find GCD // of n elements. static String recursiveFun(int n) { // base case if (n == 1) return "int"; // Recursive Step return "gcd(int, " + recursiveFun(n - 1) + ")"; } // Driver Code public static void Main() { int n = 5; Console.Write(recursiveFun(n)); } } // This code is contributed // by smitha
Javascript
<script> // javascript Program to print // single line command to // find the GCD of n integers // Function to print single // line command to find GCD // of n elements. function recursiveFun(n) { // base case if (n == 1) return "int"; // Recursive Step return "gcd(int, " + recursiveFun(n - 1) + ")"; } // Driver Code var n = 5; document.write(recursiveFun(n)); // This code is contributed by gauravrajput1 </script>
gcd(int, gcd(int, gcd(int, gcd(int, int))))
Complejidad temporal: O(N), donde N es el número dado.