Распечатайте числа от 1 до N, используя косвенную рекурсию

Опубликовано: 19 Января, 2022

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.