Preguntas de práctica para la recursividad | conjunto 3

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

Deja una respuesta

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