使用递归打印字符串的所有排列

时间:2020-09-09 07:57:18

标签: java recursion

我正在尝试使用递归树来解决它,但是当我再次收到相同的输入并导致StackOverflowError时,基本条件失败了

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

class GFG {
    public static void fun(String input, String output) {
        if (input.length() == 0) {
            System.out.println(output);
            return;
        }
        String output1 = output;
        String output2 = output + Character.toString(input.charAt(0));
        String input1 = input.substring(1) + Character.toString(input.charAt(0));
        String input2 = input.substring(1);
        fun(input1, output1);
        fun(input2, output2);
    }

    public static void main (String[] args) {
        Scanner s = new Scanner(System.in);
        int q = s.nextInt();
        for(int c = 0; c < q; c++) {
    
            String input = s.next();
            String output = "";
            fun(input, output);
        }
    }
}

0 个答案:

没有答案