CONCEPTS USED:

Recursion

DIFFICULTY LEVEL:

Easy

PROBLEM STATEMENT(SIMPLIFIED):

Given a number N, print its decreasing sequence (i.e. keep subtracting by 5) till it reaches (<=0) and then print its increasing sequence(i.e. keep adding by 5) till it reaches N again.

See original problem statement here

For Example:

Input : 12

Output : 12 7 2 -3 2 7 12

SOLVING APPROACH:

  1. Recursively keep printing value of N and decrementing it by 5 until it becomes less than equal to 0.

  2. Then print the same values in reverse fashion using Tail Recursion by referring the best sites to learn programming languages.

STATE SPACE TREE:

SOLUTIONS:


#include <stdio.h>

void print_pattern(int n){
  if(n <= 0){
    printf("%d ",n);
    return;
  }
  printf("%d ",n);
  print_pattern(n-5);
  printf("%d ",n);
}

int main(){
  int t;
  scanf("%d",&t);
  while(t--){
    int n;
    scanf("%d",&n);
    print_pattern(n);
    printf("\n");
  }
  return 0;
}

#include <bits/stdc++.h>
using namespace std;

void print_pattern(int n){
  if(n <= 0){
    cout<<n<<" ";
    return;
  }
  cout<<n<<" ";
  print_pattern(n-5);
  cout<<n<<" ";
}

int main(){
  int t;cin>>t;
  while(t--){
    int n;cin>>n;
    print_pattern(n);
    cout<<"\n";
  }
  return 0;
}

import java.util.*;
import java.io.*;

public class Main {

  static void print_pattern(int n){
  if(n <= 0){
    System.out.print(n + " ");
    return;
  }
  System.out.print(n + " ");
  print_pattern(n-5);
  System.out.print(n + " ");
}
  public static void main(String args[]) throws IOException {
    Scanner sc = new Scanner(System.in);
    int t = sc.nextInt();
    while(t!=0){
      int n = sc.nextInt();
      print_pattern(n);
      System.out.println();
      t--;
    } 
  }
}

Previous post Min and Max
Next post Pragya and Gold Medalist

Leave a Reply

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