Print Number series without using any loop

Problem – Givens Two number N and K, our task is to subtract a number K from N until number(N) is greater than zero, once the N becomes negative or zero then we start adding K until that number become the original number(N). 
Note : Not allow to use any loop.
Examples : 
 

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 

Explanation – We can do it using recursion idea is that we call the function again and again until N is greater than zero (in every function call we subtract N by K). Once the number becomes negative or zero we start adding K in every function call until the number becomes the original number. Here we use a single function for both addition and subtraction but to switch between addition or subtraction function we used a Boolean flag.
 

 

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>


Output

20 14 8 2 -4 2 8 14 20 

Time complexity: O(N/K)

Auxiliary space: O(N/K)

The extra space is used in recursion call stack.

 

Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 zambiatek!

Related Articles

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top button