Si observamos este problema detenidamente, podemos ver que la idea de «bucle» es rastrear algún valor de contador, por ejemplo, «i = 0» hasta «i <= 100». Entonces, si no se nos permite usar bucles, ¿cómo podemos rastrear algo en el lenguaje C?
Bueno, una posibilidad es el uso de ‘recursividad’, siempre que usemos la condición de terminación con cuidado. Aquí hay una solución que imprime números usando recursividad.
Método 1:
C++
// C++ program to How will you print // numbers from 1 to 100 without using a loop? #include <iostream> using namespace std; class gfg { // It prints numbers from 1 to n. public: void printNos(unsigned int n) { if(n > 0) { printNos(n - 1); cout << n << " "; } return; } }; // Driver code int main() { gfg g; g.printNos(100); return 0; } // This code is contributed by SoM15242
C
#include <stdio.h> // Prints numbers from 1 to n void printNos(unsigned int n) { if(n > 0) { printNos(n - 1); printf("%d ", n); } return; } // Driver code int main() { printNos(100); getchar(); return 0; }
Java
import java.io.*; import java.util.*; import java.text.*; import java.math.*; import java.util.regex.*; class GFG { // Prints numbers from 1 to n static void printNos(int n) { if(n > 0) { printNos(n - 1); System.out.print(n + " "); } return; } // Driver Code public static void main(String[] args) { printNos(100); } } // This code is contributed by Manish_100
Python3
# Python3 program to Print # numbers from 1 to n def printNos(n): if n > 0: printNos(n - 1) print(n, end = ' ') # Driver code printNos(100) # This code is contributed by Smitha Dinesh Semwal
C#
// C# code for print numbers from // 1 to 100 without using loop using System; class GFG { // Prints numbers from 1 to n static void printNos(int n) { if(n > 0) { printNos(n - 1); Console.Write(n + " "); } return; } // Driver Code public static void Main() { printNos(100); } } // This code is contributed by Ajit
PHP
<?php // PHP program print numbers // from 1 to 100 without // using loop // Prints numbers from 1 to n function printNos($n) { if($n > 0) { printNos($n - 1); echo $n, " "; } return; } // Driver code printNos(100); // This code is contributed by vt_m ?>
Javascript
<script> // Javascript code for print numbers from // 1 to 100 without using loop // Prints numbers from 1 to n function printNos(n) { if(n > 0) { printNos(n - 1); document.write(n + " "); } return; } printNos(100); // This code is contributed by rameshtravel07. </script>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
Complejidad de tiempo: O(n)
Espacio Auxiliar: O(n)
Método 2:
C++
// C++ program #include <bits/stdc++.h> using namespace std; void printNos(int initial, int last) { if (initial <= last) { cout << initial << " "; printNos(initial + 1, last); } } int main() { printNos(1, 100); return 0; } // This code is contributed by ukasp.
Java
/*package whatever //do not write package name here */ import java.io.*; class GFG { public static void main(String[] args) { printNos(1, 100); } public static void printNos(int initial, int last) { if (initial <= last) { System.out.print(initial + " "); printNos(initial + 1, last); } } }
Python3
def printNos(initial, last): if(initial<=last): print(initial) printNos(initial+1,last) printNos(1,10)
C#
/*package whatever //do not write package name here */ using System; public class GFG { public static void Main(String[] args) { printNos(1, 100); } public static void printNos(int initial, int last) { if (initial <= last) { Console.Write(initial + " "); printNos(initial + 1, last); } } } // This code contributed by gauravrajput1
Javascript
/*package whatever //do not write package name here */ printNos(1, 100); function printNos(initial, last) { if (initial <= last) { document.write(initial + " "); printNos(initial + 1, last); } } // This code is contributed by shivanisinghss2110
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
Complejidad de tiempo : O(n)
Espacio Auxiliar: O(n)
Método 3: Usar una MACRO
C++
#include <iostream> using namespace std; #define COUT(i) cout << i++ << " "; #define LEVEL(N) N N N N N N N N N N #define PRINT(i) LEVEL(LEVEL(COUT(i))); // 100 = 10×10 int main() { int i = 1; // prints numbers from 1 to 100 PRINT(i); return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
Ahora intente escribir un programa que haga lo mismo pero sin ninguna condición «si».
Sugerencia: use algún operador que se pueda usar en lugar de «si».
Tenga en cuenta que la técnica de recursión es buena, pero cada llamada a la función crea un «marco de pila» en la pila del programa. Entonces, si hay una restricción a la memoria limitada y necesitamos imprimir un gran conjunto de números, la «recursión» podría no ser una buena idea. Entonces, ¿cuál podría ser la otra alternativa?
Otra alternativa es la instrucción «goto». Aunque no se sugiere el uso de «goto» como práctica de programación general, ya que la instrucción «goto» cambia la secuencia normal de ejecución del programa, en algunos casos, el uso de «goto» es la mejor solución de trabajo.
Por lo tanto, intente imprimir números del 1 al 100 con la declaración «goto». Puedes usar elIDE GFG!
Imprime del 1 al 100 en C++, sin bucle ni recursividad
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