Considere el siguiente programa en C:
void convert(int n) { if (n < 0) printf(“ % d”, n); else { convert(n / 2); printf(“ % d”, n % 2); } }
¿Cuál de los siguientes ocurrirá cuando se llame a la función convertir con cualquier número entero positivo n como argumento?
(A) Imprimirá la representación binaria de n en el orden inverso y terminará.
(B) Imprimirá la representación binaria de n pero no terminará
(C) No imprimirá nada y no terminará.
(D) Imprimirá la representación binaria de n y terminará.
Respuesta: (C)
Explicación: Dado que n es el número entero, entonces 1/2 = 0.5 = 0 regresará debido al número entero.
0/2 = 0 causará un bucle infinito porque no hay una condición de terminación para 0.
Entonces, la opción (C) es correcta.
Nota:
Imprimirá la representación binaria de n y terminará, solo si la condición es «si (n <= 0)».
#include <stdio.h> void convert(int n) { if(n <= 0) printf("%d", n); else { convert(n / 2); printf("%d", n%2); }; } int main() { convert (16); }
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