Imprime los números del 1 al N usando la recursividad indirecta

Dado un número N, necesitamos imprimir números del 1 al N sin recursión directa, bucles, etiquetas. Básicamente, necesitamos insertar el fragmento de código anterior para que pueda imprimir números del 1 al N. 

C

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

Ejemplos:  

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

Input  : 5
Output : 1 2 3 4 5

Ya hemos discutido las soluciones en las publicaciones a continuación: 
Imprimir 1 a 100 en C++, sin bucle y recursividad  
¿Cómo imprimirá números del 1 al 100 sin usar bucle? 

Aquí está el código que puede imprimir los números del 1 al 100 sin recursión directa, bucles y etiquetas. El código usa recursividad indirecta

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>

Producción : 

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

¿Cómo funciona esto?: 
En el programa anterior, solo usamos dos funciones. Uno llama a los demás y otro llama al anterior, por lo tanto recursividad indirecta.

Ejercicio: 
modifique el programa anterior para usar N como parámetro en lugar de hacerlo global.

Este artículo es una contribución de Umamaheswararao Tumma de la facultad de ingeniería Jntuh de Hyderabad . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *