Если мы внимательно рассмотрим эту проблему, то увидим, что идея «цикла» состоит в отслеживании некоторого значения счетчика, например, от «i = 0» до «i <= 100». Итак, если нам не разрешено использовать цикл, как еще можно что-то отслеживать на языке C!
Что ж, одна из возможностей - это использование «рекурсии» при условии, что мы будем осторожно использовать условие завершения. Вот решение, которое печатает числа с помощью рекурсии.
C ++
#include <iostream> using namespace std; class gfg {
public : void printNos(unsigned int n) { if (n > 0)
{
printNos(n - 1);
cout << n << " " ;
}
return ;
} }; int main() { gfg g;
g.printNos(100);
return 0;
} |
C
#include <stdio.h> void printNos(unsigned int n) { if (n > 0)
{
printNos(n - 1);
printf ( "%d " , n);
}
return ;
} int main() { printNos(100);
getchar ();
return 0;
} |
Джава
import java.io.*; import java.util.*; import java.text.*; import java.math.*; import java.util.regex.*; class GFG {
static void printNos( int n)
{
if (n > 0 )
{
printNos(n - 1 );
System.out.print(n + " " );
}
return ;
}
public static void main(String[] args)
{
printNos( 100 );
}
} |
Python3
def printNos(n): if n > 0 :
printNos(n - 1 )
print (n, end = ' ' )
printNos( 100 ) |
C #
using System; class GFG {
static void printNos( int n)
{
if (n > 0)
{
printNos(n - 1);
Console.Write(n + " " );
}
return ;
}
public static void Main() { printNos(100);
} } |
PHP
<?php function printNos( $n ) { if ( $n > 0)
{
printNos( $n - 1);
echo $n , " " ;
}
return ;
} printNos(100); ?> |
Javascript
<script>
function printNos(n)
{
if (n > 0)
{
printNos(n - 1);
document.write(n + " " );
}
return ;
}
printNos(100);
</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
Сложность времени: O (n)
Теперь попробуйте написать программу, которая делает то же самое, но без конструкции «if».
Подсказка - используйте какой-нибудь оператор, который можно использовать вместо «если».
Обратите внимание, что метод рекурсии хорош, но каждый вызов функции создает один «стек-кадр» в программном стеке. Так что, если есть ограничение на ограниченную память и нам нужно напечатать большой набор чисел, «рекурсия» может быть не очень хорошей идеей. Так что же может быть другой альтернативой?
Другой альтернативой является инструкция «goto». Хотя использование «goto» не рекомендуется в качестве общей практики программирования, поскольку оператор «goto» изменяет нормальную последовательность выполнения программы, тем не менее, в некоторых случаях использование «goto» является лучшим рабочим решением.
Поэтому, пожалуйста, попробуйте напечатать числа от 1 до 100 с помощью оператора goto. Вы можете использовать GfG IDE!
Выведите от 1 до 100 на C ++ без цикла и рекурсии
Хотите узнать о лучших видео и практических задачах, ознакомьтесь с базовым курсом C ++ для базового и продвинутого уровня C ++ и курсом C ++ STL для базового уровня плюс STL. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .