Print Number series without using any loop
Last Updated :
26 Feb, 2023
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++
#include <iostream>
using namespace std;
void PrintNumber( int N, int Original, int K, bool flag)
{
cout << N << " " ;
if (N <= 0)
flag = !flag;
if (N == Original && !flag)
return ;
if (flag == true ) {
PrintNumber(N - K, Original, K, flag);
return ;
}
if (!flag) {
PrintNumber(N + K, Original, K, flag);
return ;
}
}
int main()
{
int N = 20, K = 6;
PrintNumber(N, N, K, true );
return 0;
}
|
Java
import java.io.*;
import java.util.*;
class GFG
{
public static void PrintNumber( int N, int Original, int K, boolean flag)
{
System.out.print(N + " " );
if (N <= 0 )
flag = !flag;
if (N == Original && !flag)
return ;
if (flag == true )
{
PrintNumber(N - K, Original, K, flag);
return ;
}
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 );
}
}
|
Python3
def PrintNumber(N, Original, K, flag):
print (N, end = " " )
if (N < = 0 ):
if (flag = = 0 ):
flag = 1
else :
flag = 0
if (N = = Original and ( not (flag))):
return
if (flag = = True ):
PrintNumber(N - K, Original, K, flag)
return
if ( not (flag)):
PrintNumber(N + K, Original, K, flag);
return
N = 20
K = 6
PrintNumber(N, N, K, True )
|
C#
using System;
public class GFG {
static void PrintNumber( int N,
int Original, int K, bool flag)
{
Console.Write(N + " " );
if (N <= 0)
flag = !flag;
if (N == Original && !flag)
return ;
if (flag == true )
{
PrintNumber(N - K, Original, K,
flag);
return ;
}
if (!flag)
{
PrintNumber(N + K, Original, K,
flag);
return ;
}
}
static public void Main ()
{
int N = 20, K = 6;
PrintNumber(N, N, K, true );
}
}
|
PHP
<?php
function PrintNumber( $N , $Original ,
$K , $flag )
{
echo ( $N . " " );
if ( $N <= 0)
$flag = ! $flag ;
if ( $N == $Original && ! $flag )
return ;
if ( $flag == true) {
PrintNumber( $N - $K , $Original ,
$K , $flag );
return ;
}
if (! $flag ) {
PrintNumber( $N + $K , $Original ,
$K , $flag );
return ;
}
}
$N = 20; $K = 6;
PrintNumber( $N , $N , $K , true);
?>
|
Javascript
<script>
function PrintNumber(N, Original,
K, flag)
{
document.write(N + " " );
if (N <= 0)
flag = !flag;
if (N == Original && !flag)
return ;
if (flag == true ) {
PrintNumber(N - K, Original,
K, flag);
return ;
}
if (!flag) {
PrintNumber(N + K, Original,
K, flag);
return ;
}
}
let N = 20, K = 6;
PrintNumber(N, N, K, true );
</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.
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...