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