Распечатайте числа от 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 Program int main( void ) { fun1(); return 0; } |
Java
// Java program to print from 1 to N using // indirect recursion class 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 references N = 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 Program if __name__ = = "__main__" : fun1(); # This code is contributed by 29AjayKumar |
C#
// C# program to print from 1 to N using // indirect recursion using 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 Code fun1(); // 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.