PUERTA | GATE-CS-2015 (Conjunto 3) | Pregunta 49

Considere la siguiente función de C recursiva. Si se llama a la función get(6) en main(), ¿cuántas veces se invocará la función get() antes de volver a main()?

void get (int n)
{
   if (n < 1) return;
   get(n-1);
   get(n-3);
   printf("%d", n);
}

(A) 15
(B) 25
(C) 35
(D) 45

Respuesta: (B)
Explicación:

                              get(6) [25 Calls]
                              /      \
               [17 Calls] get(5)        [7 Calls]
                        /     \
                    get(4)    [5 Calls]
                   /    \ 
     [7 Calls]   
                /     \
                get(0)
            /    \
[3 Calls]  get(-1) 
   /  \
get(0) get(-2)

Podemos verificar lo mismo ejecutando el siguiente programa.

# include <stdio.h>
int count = 0;
  
void get (int n)
{
    count++;
    if (n < 1) return;
    get(n-1);
    get(n-3);
}
int main()
{
    get(6);
    printf("%d ", count);
}

Salida: 25
Quiz de esta pregunta

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 *