package com.berkanaslan; import java.util.Scanner; public class RecursivePermutation { public static void main(String[] args) { final String input = getInput(); final String output = ""; permute(input, output); System.out.println(output); } private static String getInput() { final Scanner scanner = new Scanner(System.in); System.out.println("Provide input: "); return scanner.nextLine(); } private static void permute(String input, String output) { if (input.length() == 0) { System.out.println(output); return; } for (int i = 0; i < input.length(); i++) { final char c = input.charAt(i); final String leftCharsOfC = input.substring(0, i); final String rightCharsOfC = input.substring(i + 1); final String restOfTheInput = leftCharsOfC + rightCharsOfC; permute(restOfTheInput, output + c); } } }