Last Updated on March 30, 2022 by Ria Pathak
CONCEPTS USED:
Recursion
DIFFICULTY LEVEL:
Easy
PROBLEM STATEMENT(SIMPLIFIED):
Given a number N, your task is to print all even numbers (>0) from 1 to N using recursion.
See original problem statement here
For Example:
Input : N = 7
Output : 2 4 6
SOLVING APPROACH:
- Check if the value of N is even, recursively go on checking for other values of N-2 and print this value.
- If the value of N is odd, recursively go on checking for (N-1) as (N-1) would be even.
- If at any point, N becomes (<=0), simply return.
ALGORITHM:
if (n <= 0)
exit
if (n is even)
check for (n-2) and print n
if (n is odd)
check for (n-1)
STATE SPACE TREE:
SOLUTIONS:
#include <stdio.h>
void printEven(int n){
if(n <= 0) //if n becomes less than equal to 0
return ;
if( n%2 == 0){
printEven(n-2); //if n is even go for smaller values of n and finally print all
printf("%d ",n);
}
else
printEven(n-1); //if n is odd recurse for n-1 values as it will be even
}
int main()
{
int t;
scanf("%d",&t);
while(t--){
int n;
scanf("%d",&n);
printEven(n);
printf("\n");
}
return 0;
}
#include <stdio.h>
void printEven(int n){
if(n <= 0) //if n becomes less than equal to 0
return ;
if( n%2 == 0){
printEven(n-2); //if n is even go for smaller values of n and finally print all
printf("%d ",n);
}
else
printEven(n-1); //if n is odd recurse for n-1 values as it will be even
}
int main()
{
int t;
scanf("%d",&t);
while(t--){
int n;
scanf("%d",&n);
printEven(n);
printf("\n");
}
return 0;
}
#include <stdio.h> void printEven(int n){ if(n <= 0) //if n becomes less than equal to 0 return ; if( n%2 == 0){ printEven(n-2); //if n is even go for smaller values of n and finally print all printf("%d ",n); } else printEven(n-1); //if n is odd recurse for n-1 values as it will be even } int main() { int t; scanf("%d",&t); while(t--){ int n; scanf("%d",&n); printEven(n); printf("\n"); } return 0; }
#include <bits/stdc++.h>
using namespace std;
void printEven(int n){
if(n <= 0) //if n becomes less than equal to 0
return ;
if( n%2 == 0){
printEven(n-2); //if n is even go for smaller values of n and finally print all
cout<<n<<" ";
}
else
printEven(n-1); //if n is odd recurse for n-1 values as it will be even
}
int main()
{
int t;cin>>t;
while(t--){
int n;cin>>n;
printEven(n);
cout<<"\n";
}
return 0;
}
#include <bits/stdc++.h>
using namespace std;
void printEven(int n){
if(n <= 0) //if n becomes less than equal to 0
return ;
if( n%2 == 0){
printEven(n-2); //if n is even go for smaller values of n and finally print all
cout<<n<<" ";
}
else
printEven(n-1); //if n is odd recurse for n-1 values as it will be even
}
int main()
{
int t;cin>>t;
while(t--){
int n;cin>>n;
printEven(n);
cout<<"\n";
}
return 0;
}
#include <bits/stdc++.h> using namespace std; void printEven(int n){ if(n <= 0) //if n becomes less than equal to 0 return ; if( n%2 == 0){ printEven(n-2); //if n is even go for smaller values of n and finally print all cout<<n<<" "; } else printEven(n-1); //if n is odd recurse for n-1 values as it will be even } int main() { int t;cin>>t; while(t--){ int n;cin>>n; printEven(n); cout<<"\n"; } return 0; }
import java.util.*;
import java.io.*;
public class Main {
public static void main(String args[]) throws IOException {
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
while(t!=0)
{
int arr_x[] = new int[4];
int arr_y[] = new int[4];
for(int i=0;i<4;i++)
{
arr_x[i] = sc.nextInt();
arr_y[i] = sc.nextInt();;
}
int dist_12 = (arr_x[0]-arr_x[1])*(arr_x[0]-arr_x[1]) + (arr_y[0]-arr_y[1])*(arr_y[0]-arr_y[1]);
int dist_34 = (arr_x[2]-arr_x[3])*(arr_x[2]-arr_x[3]) + (arr_y[2]-arr_y[3])*(arr_y[2]-arr_y[3]);
int midx_12 = (arr_x[0]+arr_x[1])/2;
int midy_12 = (arr_y[0]+arr_y[1])/2;
int midx_34 = (arr_x[2]+arr_x[3])/2;
int midy_34 = (arr_y[2]+arr_y[3])/2;
if(dist_12 == dist_34 && midx_12==midx_34 && midy_12==midy_34)
{
System.out.println("Yes");
}
else
{
System.out.println("No");
}
t--;
}
}
}
import java.util.*;
import java.io.*;
public class Main {
public static void main(String args[]) throws IOException {
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
while(t!=0)
{
int arr_x[] = new int[4];
int arr_y[] = new int[4];
for(int i=0;i<4;i++)
{
arr_x[i] = sc.nextInt();
arr_y[i] = sc.nextInt();;
}
int dist_12 = (arr_x[0]-arr_x[1])*(arr_x[0]-arr_x[1]) + (arr_y[0]-arr_y[1])*(arr_y[0]-arr_y[1]);
int dist_34 = (arr_x[2]-arr_x[3])*(arr_x[2]-arr_x[3]) + (arr_y[2]-arr_y[3])*(arr_y[2]-arr_y[3]);
int midx_12 = (arr_x[0]+arr_x[1])/2;
int midy_12 = (arr_y[0]+arr_y[1])/2;
int midx_34 = (arr_x[2]+arr_x[3])/2;
int midy_34 = (arr_y[2]+arr_y[3])/2;
if(dist_12 == dist_34 && midx_12==midx_34 && midy_12==midy_34)
{
System.out.println("Yes");
}
else
{
System.out.println("No");
}
t--;
}
}
}
import java.util.*; import java.io.*; public class Main { public static void main(String args[]) throws IOException { Scanner sc = new Scanner(System.in); int t = sc.nextInt(); while(t!=0) { int arr_x[] = new int[4]; int arr_y[] = new int[4]; for(int i=0;i<4;i++) { arr_x[i] = sc.nextInt(); arr_y[i] = sc.nextInt();; } int dist_12 = (arr_x[0]-arr_x[1])*(arr_x[0]-arr_x[1]) + (arr_y[0]-arr_y[1])*(arr_y[0]-arr_y[1]); int dist_34 = (arr_x[2]-arr_x[3])*(arr_x[2]-arr_x[3]) + (arr_y[2]-arr_y[3])*(arr_y[2]-arr_y[3]); int midx_12 = (arr_x[0]+arr_x[1])/2; int midy_12 = (arr_y[0]+arr_y[1])/2; int midx_34 = (arr_x[2]+arr_x[3])/2; int midy_34 = (arr_y[2]+arr_y[3])/2; if(dist_12 == dist_34 && midx_12==midx_34 && midy_12==midy_34) { System.out.println("Yes"); } else { System.out.println("No"); } t--; } } }
def printEven(n):
if(n <= 0):
return
if( n%2 == 0):
printEven(n - 2)
print(n, end = " ")
else:
printEven(n - 1)
for _ in range(int(input())):
n = int(input())
printEven(n)
print()
def printEven(n):
if(n <= 0):
return
if( n%2 == 0):
printEven(n - 2)
print(n, end = " ")
else:
printEven(n - 1)
for _ in range(int(input())):
n = int(input())
printEven(n)
print()
def printEven(n): if(n <= 0): return if( n%2 == 0): printEven(n - 2) print(n, end = " ") else: printEven(n - 1) for _ in range(int(input())): n = int(input()) printEven(n) print()
[forminator_quiz id="1007"]
This article tried to discuss the concept of Recursion. Hope this blog helps you understand and solve the problem. To practice more problems on Recursion you can check out MYCODE | Competitive Programming.