get stair path

 avatar
user_4666436
java
3 years ago
2.6 kB
3
Indexable
package recursion;

//https://pepcoding.com/resources/online-java-foundation/recursion-with-arraylists/get-stair-paths-official/ojquestion

import java.util.*;

public class getStairPathQ3 {
	
	public static void main(String args[]) {
		Scanner scn = new Scanner(System.in);
		int num = scn.nextInt();
		ArrayList<String> res = getStairPaths(num);
		System.out.println("Your result is : ");
		System.out.println(res);
	}
	
	public static ArrayList<String> getStairPathsFor1Step(int n){
		if(n == 1) {
			ArrayList<String> baseResult = new ArrayList<>();
			baseResult.add("1");
			return baseResult;
		}
		
		ArrayList<String> resFor1 = getStairPathsFor1Step(n-1);
		ArrayList<String> finalResFor1 = new ArrayList<>();
		for(int i=0;i<resFor1.size();i++) {
			String for1 = resFor1.get(i);
			for1 += '1';
			finalResFor1.add(for1);
		}
		
		return finalResFor1;
	}
	
	public static ArrayList<String> getStairPathsFor2Step(int n){
		if(n == 1) {
			ArrayList<String> baseResult = new ArrayList<>();
			baseResult.add("1");
			return baseResult;
		}
		
		if(n == 2) {
			ArrayList<String> baseResult = new ArrayList<>();
			baseResult.add("2");
			return baseResult;
		}
		ArrayList<String> finalResFor2 = new ArrayList<>();
		for(int j = 1;j<n;j++) {
			System.out.println("(n-j) is : "+(n-j));
			ArrayList<String> resFor2 = getStairPathsFor2Step(n-j);
			System.out.println(resFor2);

			for(int i=0;i<resFor2.size();i++) {
				String for1 = resFor2.get(i);
				if((n-j-i) > 1) {
					for1 += '1';
				}
				else {
					for1 += '2';
				}
			
				finalResFor2.add(for1);
			}
		}
		
		return finalResFor2;
	}
	
	public static ArrayList<String> getStairPaths(int n) {
		
		if(n <= 1) {
			ArrayList<String> baseResult = new ArrayList<>();
			baseResult.add("1");
			return baseResult;
		}
		
		ArrayList<String> finalResult = new ArrayList<>();
		
		ArrayList<String> faithResult_for1 = getStairPathsFor1Step(n);
		
		for(int i=0;i<faithResult_for1.size();i++) {
			String for1 = faithResult_for1.get(i);
			finalResult.add(for1);
		}
		
		ArrayList<String> faithResult_for2 = getStairPathsFor2Step(n);
		
		for(int i=0;i<faithResult_for2.size();i++) {
			String for2 = faithResult_for2.get(i);
			finalResult.add(for2);
		}
		
		/*System.out.println("finalResult after for loop2");
		System.out.println(finalResult);
		
		ArrayList<String> faithResult_for3 = getStairPaths(n-3);
		
		for(int i=0;i<faithResult_for3.size();i++) {
			String for3 = faithResult_for3.get(i);
			finalResult.add(for3);
		}
		
		System.out.println("finalResult after for loop3");
		System.out.println(finalResult);*/
		
		return finalResult;
    }

}
Editor is loading...