Explique la funcionalidad de las siguientes funciones recursivas.
Pregunta 1
C++
void fun1(int n) { int i = 0; if (n > 1) fun1(n - 1); for (i = 0; i < n; i++) cout << " * "; } // This code is contributed by shubhamsingh10
C
void fun1(int n) { int i = 0; if (n > 1) fun1(n-1); for (i = 0; i < n; i++) printf(" * "); }
Java
static void fun1(int n) { int i = 0; if (n > 1) fun1(n - 1); for (i = 0; i < n; i++) System.out.print(" * "); } // This code is contributed by shubhamsingh10
Python3
def fun1(n): i = 0 if (n > 1): fun1(n - 1) for i in range(n): print(" * ",end="") # This code is contributed by shubhamsingh10
C#
static void fun1(int n) { int i = 0; if (n > 1) fun1(n-1); for (i = 0; i < n; i++) Console.Write(" * "); } // This code is contributed by shubhamsingh10
Javascript
<script> function fun1(n) { let i = 0; if (n > 1) fun1(n - 1); for(i = 0; i < n; i++) document.write(" * "); } // This code is contributed by gottumukkalabobby </script>
Respuesta: El número total de estrellas impresas es igual a 1 + 2 + …. (n-2) + (n-1) + n, que es n(n+1)/2.
Pregunta 2
C++
#define LIMIT 1000 void fun2(int n) { if (n <= 0) return; if (n > LIMIT) return; cout << n <<" "; fun2(2*n); cout << n <<" "; } // This code is contributed by shubhamsingh10
C
#define LIMIT 1000 void fun2(int n) { if (n <= 0) return; if (n > LIMIT) return; printf("%d ", n); fun2(2*n); printf("%d ", n); }
Java
int LIMIT = 1000; void fun2(int n) { if (n <= 0) return; if (n > LIMIT) return; System.out.print(String.format("%d ", n)); fun2(2 * n); System.out.print(String.format("%d ", n)); }
Python3
LIMIT = 1000 def fun2(n): if (n <= 0): return if (n > LIMIT): return print(n, end=" ") fun2(2 * n) print(n, end=" ") # This code is contributed by shubhamsingh10
C#
int LIMIT = 1000 void fun2(int n) { if (n <= 0) return; if (n > LIMIT) return; Console.Write(n+" "); fun2(2*n); Console.Write(n+" "); } // This code is contributed by Shubhamsingh10
Javascript
<script> let LIMIT = 1000; function fun2(n) { if (n <= 0) return; if (n > LIMIT) return; document.write(n + " ")); fun2(2 * n); document.write(n + " ")); } // This code is contributed by gottumukkalabobby </script>
Respuesta: Para un n positivo, fun2(n) imprime los valores de n, 2n, 4n, 8n… mientras que el valor es menor que LIMIT. Después de imprimir los valores en orden creciente, vuelve a imprimir los mismos números en orden inverso. Por ejemplo, fun2(100) imprime 100, 200, 400, 800, 800, 400, 200, 100.
Si n es negativo, la función se devuelve inmediatamente.
Complejidad temporal: O(n)
Espacio Auxiliar: O(1)
Escriba comentarios si encuentra que alguna de las respuestas/códigos es incorrecta, o si desea compartir más información sobre los temas discutidos anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA