Open In App

Print numbers 1 to N using Indirect recursion

Improve
Improve
Improve
Like Article
Like
Save Article
Save
Share
Report issue
Report

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? 

C




#include <stdio.h>
#define N 20;
int main()
{
   // Your code goes Here.
}


Examples :  

Input  : 10
Output : 1 2 3 4 5 6 7 8 9 10

Input  : 5
Output : 1 2 3 4 5

We have already discussed solutions in below posts : 
Print 1 to 100 in C++, without loop and recursion 
How will you print numbers from 1 to 100 without using loop? 

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<bits/stdc++.h>
using namespace std;
 
// We can avoid use of these using references
int N = 20;
int n = 1;
 
void fun1();
void fun2();
 
// Prints n, increments n and calls fun1()
void fun1()
{
    if (n <= N)
    {
        cout << n << " ";
        n++;
        fun2();
    }
    else
        return;
}
 
// Prints n, increments n and calls fun2()
void fun2()
{
    if (n <= N)
    {
        cout << n << " ";
        n++;
        fun1();
    }
    else
        return;
}
 
// Driver Program
int main()
{
    fun1();
    return 0;
}
 
// This code is contributed by pankajsharmagfg.


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 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()
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
?>


Javascript




<script>
 
// Javascript program to print from 1 to N using
// indirect recursion
 
// We can avoid use of these using references
let N = 20;
let n = 1
 
// Prints n, increments n and calls fun1()
function fun1()
{
    if (n <= N)
    {
        document.write( n+" ");
        n++;
        fun2();
    }
    else
    {
        return;
    }
}
 
// Prints n, increments n and calls fun2()
function fun2()
{
    if (n <= N)
    {
        document.write(n+" ");
        n++;
        fun1();
    }
    else
    {
        return;
    }
}
 
// Driver code
fun1();
 
// This code is contributed by rag2127
 
</script>


Output : 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 

How This works?: 
In above  program, we just used two functions. One calls others and other one calls previous one, therefore indirect recursion.

Exercise : 
Modify the above program to use N as a parameter instead of making it global.

 



Last Updated : 13 May, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads