Imprima series de números sin usar ningún bucle

Problema: dados dos números N y K, nuestra tarea es restar un número K de N hasta que el número (N) sea mayor que cero, una vez que N se vuelve negativo o cero, comenzamos a agregar K hasta que ese número se convierte en el número original (N ). 
Nota: No se permite usar ningún bucle.
Ejemplos: 
 

Input : N = 15 K = 5  
Output : 15 10 5 0 1 5 10 15

Input : N = 20 K = 6
Output : 20 14 8 2 -4 2 8 14 20 

Explicación: podemos hacerlo usando la idea de la recursión es que llamamos a la función una y otra vez hasta que N sea mayor que cero (en cada llamada de función restamos N por K). Una vez que el número se vuelve negativo o cero, comenzamos a agregar K en cada llamada de función hasta que el número se convierte en el número original. Aquí usamos una sola función tanto para la suma como para la resta, pero para cambiar entre la función de suma o resta usamos una bandera booleana .
 

C++

// C++ program to Print Number
// series without using loop
#include <iostream>
 
using namespace std;
 
// function print series
// using recursion
void PrintNumber(int N, int Original, int K, bool flag)
{
 
    // print the number
    cout << N << " ";
 
    // change flag if number
    // become negative
    if (N <= 0)
        flag = !flag;
 
    // base condition for
    // second_case (Adding K)
    if (N == Original && !flag)
 
        return;
 
    // if flag is true
    // we subtract value until
    // number is greater than zero
    if (flag == true) {
 
        PrintNumber(N - K, Original, K, flag);
 
        return;
    }
 
    // second case (Addition )
    if (!flag) {
 
        PrintNumber(N + K, Original, K, flag);
 
        return;
    }
}
 
// driver program
int main()
{
 
    int N = 20, K = 6;
 
    PrintNumber(N, N, K, true);
 
    return 0;
}

Java

// Java program to Print Number
// series without using loop
 
import java.io.*;
import java.util.*;
 
class GFG
{
    public static void PrintNumber(int N, int Original, int K, boolean flag)
    {
 
        // print the number
        System.out.print(N + " ");
 
        // change flag if number
        // become negative
        if (N <= 0)
            flag = !flag;
 
        // base condition for
        // second_case (Adding K)
        if (N == Original && !flag)
 
            return;
 
        // if flag is true
        // we subtract value until
        // number is greater than zero
        if (flag == true)
        {
            PrintNumber(N - K, Original, K, flag);
            return;
        }
 
        // second case (Addition )
        if (!flag)
        {
            PrintNumber(N + K, Original, K, flag);
            return;
        }
    }
 
    public static void main (String[] args)
    {
        int N = 20, K = 6;
        PrintNumber(N, N, K, true);
    }
}
// This code is contributed by Mohit Gupta_OMG

Python3

# Python program to Print Number
# series without using loop
 
def PrintNumber(N, Original, K, flag):
    #print the number
    print(N, end = " ")
     
    # change flag if number
    # become negative
     
    if (N <= 0):
        if(flag==0):
            flag = 1
        else:
            flag = 0
         
    # base condition for
    # second_case (Adding K)
     
    if (N == Original and (not(flag))):
        return
     
    # if flag is true
    # we subtract value until
    # number is greater than zero
     
    if (flag == True):
        PrintNumber(N - K, Original, K, flag)
        return
     
    # second case (Addition )
    if (not(flag)):
        PrintNumber(N + K, Original, K, flag);
        return
     
N = 20
K = 6
PrintNumber(N, N, K, True)
 
# This code is contributed by Mohit Gupta_OMG

C#

// C# program to Print Number
// series without using loop
using System;
 
public class GFG {
         
    // function print series
    // using recursion
    static void PrintNumber(int N,
             int Original, int K, bool flag)
    {
     
        // print the number
        Console.Write(N + " ");
     
        // change flag if number
        // become negative
        if (N <= 0)
            flag = !flag;
     
        // base condition for
        // second_case (Adding K)
        if (N == Original && !flag)
            return;
     
        // if flag is true
        // we subtract value until
        // number is greater than zero
        if (flag == true)
        {
            PrintNumber(N - K, Original, K,
                                      flag);
            return;
        }
     
        // second case (Addition )
        if (!flag)
        {
            PrintNumber(N + K, Original, K,
                                      flag);
            return;
        }
    }
     
    // driver program
    static public void Main ()
    {
        int N = 20, K = 6;
 
        PrintNumber(N, N, K, true);
    }
}
 
// This code is contributed by vt_m.

PHP

<?php
// PHP program to Print Number
// series without using loop
 
// function print series
// using recursion
function PrintNumber($N, $Original,
                     $K, $flag)
{
 
    // print the number
    echo($N . " ");
 
    // change flag if number
    // become negative
    if ($N <= 0)
        $flag = !$flag;
 
    // base condition for
    // second_case (Adding K)
    if ($N == $Original && !$flag)
 
        return;
 
    // if flag is true
    // we subtract value until
    // number is greater than zero
    if ($flag == true) {
 
        PrintNumber($N - $K, $Original,
                         $K, $flag);
 
        return;
    }
 
    // second case (Addition )
    if (!$flag) {
 
        PrintNumber($N + $K, $Original,
                         $K, $flag);
 
        return;
    }
}
 
// Driver Code
$N = 20; $K = 6;
 
PrintNumber($N, $N, $K, true);
 
// This code is contributed by Ajit.
?>

Javascript

<script>
// Javascript program to Print Number
// series without using loop
 
// function print series
// using recursion
function PrintNumber(N, Original,
                    K, flag)
{
 
    // print the number
    document.write(N + " ");
 
    // change flag if number
    // become negative
    if (N <= 0)
        flag = !flag;
 
    // base condition for
    // second_case (Adding K)
    if (N == Original && !flag)
 
        return;
 
    // if flag is true
    // we subtract value until
    // number is greater than zero
    if (flag == true) {
 
        PrintNumber(N - K, Original,
                        K, flag);
 
        return;
    }
 
    // second case (Addition )
    if (!flag) {
 
        PrintNumber(N + K, Original,
                        K, flag);
 
        return;
    }
}
 
// Driver Code
let N = 20, K = 6;
 
PrintNumber(N, N, K, true);
 
// This code is contributed by _saurabh_jaiswal
</script>

Producción : 
 

20 14 8 2 -4 2 8 14 20 

Publicación traducida automáticamente

Artículo escrito por shubham_singh 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 *