Распечатайте числа от 1 до N, используя косвенную рекурсию
Given a number N, we need to print numbers from 1 to N with out direct recursion, loops, labels. Basically we need to insert in above code snippet so that it can be able to print numbers from 1 to N?
#include <stdio.h>#define N 20;int main(){ // Your code goes Here.} |
Примеры :
Ввод: 10 Выход: 1 2 3 4 5 6 7 8 9 10 Ввод: 5 Выход: 1 2 3 4 5
Мы уже обсуждали решения в следующих сообщениях:
Выведите от 1 до 100 на C ++ без цикла и рекурсии
Как вы будете печатать числа от 1 до 100 без использования цикла?
Рекомендуется: сначала решите эту проблему на «ПРАКТИКЕ», прежде чем переходить к решению.
Here’s the code that can print the numbers from 1 to 100 with out direct recursion, loops and labels. The code uses indirect recursion.
C
// C program to print from 1 to N using// indirect recursion/#include<stdio.h> // We can avoid use of these using references#define N 20;int n = 1; // Prints n, increments n and calls fun1()void fun1(){ if (n <= N) { printf("%d", n); n++; fun2(); } else return;} // Prints n, increments n and calls fun2()void fun2(){ if (n <= N) { printf("%d", n); n++; fun1(); } else return;} // Driver Programint main(void){ fun1(); return 0;} |
Java
// Java program to print from 1 to N using// indirect recursionclass GFG { // We can avoid use of these using references static final int N = 20; static int n = 1; // Prints n, increments n and calls fun1() static void fun1() { if (n <= N) { System.out.printf("%d ", n); n++; fun2(); } else { return; } } // Prints n, increments n and calls fun2() static void fun2() { if (n <= N) { System.out.printf("%d ", n); n++; fun1(); } else { return; } } // Driver Program public static void main(String[] args) { fun1(); }} // This code is contributed by Rajput-Ji |
Python3
# Python program to prfrom 1 to N using# indirect recursion # We can avoid use of these using referencesN = 20;n = 1; # Prints n, increments n and calls fun1()def fun1(): global N, n; if (n <= N): print(n, end = " "); n += 1; fun2(); else: return; # Prints n, increments n and calls fun2()def fun2(): global N, n; if (n <= N): print(n, end = " "); n += 1; fun1(); else: return; # Driver Programif __name__ == "__main__": fun1(); # This code is contributed by 29AjayKumar |
C#
// C# program to print from 1 to N using// indirect recursionusing System; class GFG { // We can avoid use of these using references static readonly int N = 20; static int n = 1; // Prints n, increments n and calls fun1() static void fun1() { if (n <= N) { Console.Write("{0} ", n); n++; fun2(); } else { return; } } // Prints n, increments n and calls fun2() static void fun2() { if (n <= N) { Console.Write("{0} ", n); n++; fun1(); } else { return; } } // Driver Code public static void Main(String[] args) { fun1(); }} // This code is contributed by Rajput-Ji |
PHP
<?php// PHP program to print // from 1 to N using // indirect recursion // We can avoid use of// these using references$N = 20;$n = 1; // Prints n, increments // n and calls fun1()function fun1(){ global $N; global $n; if ($n <= $N) { echo $n, " "; $n++; fun2(); } else return;} // Prints n, increments// n and calls fun2()function fun2(){ global $N; global $n; if ($n <= $N) { echo $n, " "; $n++; fun1(); } else return;} // Driver Codefun1(); // This code is contributed // by m_kit?> |
Output :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Как это работает ?:
В приведенной выше программе мы использовали только две функции. Один вызывает других, а другой вызывает предыдущий, поэтому косвенная рекурсия.
Упражнение :
Измените указанную выше программу, чтобы использовать N в качестве параметра, а не делать его глобальным.
Эта статья предоставлена Умамахешварарао Туммой из инженерного колледжа Джнту в Хайдарабаде . Если вам нравится GeeksforGeeks, и вы хотели бы внести свой вклад, вы также можете написать статью на сайте deposit.geeksforgeeks.org или отправить свою статью по электронной почте: grant@geeksforgeeks.org. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.
Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.
Вниманию читателя! Не прекращайте учиться сейчас. Освойте все важные концепции DSA с помощью самостоятельного курса DSA по приемлемой для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .
Если вы хотите посещать живые занятия с отраслевыми экспертами, пожалуйста, обращайтесь к Geeks Classes Live и Geeks Classes Live USA.