Last Updated : 23 Apr, 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.
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
Output :
20 14 8 2 -4 2 8 14 20
The time complexity is O(N/K), where N is the input number and K is the step value.
The auxiliary space is O(N/K)
Approach Name: Recursive Mathematical Approach using Function Calls.Steps:
def print_series(N, K):
if N <= 0:
print(N, end=" ")
return
print(N, end=" ")
print_series(N-K, K)
print(N, end=" ")
N = 20
K = 6
print_series(N, K)
20 14 8 2 -4 2 8 14 20
It has a time complexity of O(log(N/K)) and an auxiliary space of O(log(N/K)).
Please refer complete article on Print Number series without using any loop for more details!
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4