Escriba una función de C print(n) que tome un número entero largo n como argumento y lo imprima en la consola. La única función de biblioteca permitida es putchar() , no se permite ninguna otra función como itoa() o printf() . Tampoco se permite el uso de bucles.
Recomendamos encarecidamente minimizar el navegador y probarlo usted mismo primero.
Esta es una simple pregunta capciosa. Dado que putchar() imprime un carácter, debemos llamar a putchar() para todos los dígitos. La recursión siempre se puede usar para reemplazar la iteración, por lo que al usar la recursión podemos imprimir todos los dígitos uno por uno. Ahora la pregunta es putchar() imprime un carácter, cómo imprimir dígitos usando putchar(). Necesitamos convertir cada dígito a su valor ASCII correspondiente, esto se puede hacer usando el valor ASCII de ‘0’. A continuación se muestra el programa C completo.
C
/* C program to print a long int number using putchar() only*/ #include <stdio.h> void print(long n) { // If number is smaller than 0, put a - sign // and change number to positive if (n < 0) { putchar('-'); n = -n; } // Remove the last digit and recur if (n/10) print(n/10); // Print the last digit putchar(n%10 + '0'); } // Driver program to test above function int main() { long int n = 12045; print(n); return 0; }
Producción:
12045
Complejidad de tiempo : O (logn)
Espacio auxiliar: O (logn)
Una cosa importante a tener en cuenta es la secuencia de putchar() y la llamada recursiva print(n/10). Dado que los dígitos deben imprimirse de izquierda a derecha, la llamada recursiva debe aparecer antes de putchar() (el dígito más a la derecha debe imprimirse al final, todos los demás dígitos deben imprimirse antes).
Este artículo es una contribución de Abhay Rathi . Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado 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