ciao
codice:
 public static void main(String[] args) {

        String set = "abc";
        
        String v="";
        int numSet=0;
        do
        {
            numSet++;

            String app = null;
            if(numSet == 1)
            {
                for(int i=0 ;i<set.length() ;i++)
                {
                    v="";
                    v += set.substring(i, i+1);
                    System.out.println( v);
                    /* for(int j=0;j<3;j++)
                     {
                      v+= set.substring(j, j+1);
                        System.out.println(v);
                        v = set.substring(i, i+1);
                    }*/
                }
            }
            else if(numSet == 2)
            {
                for(int i=0 ;i<set.length();i++)
                {
                    v="";
                    v += set.substring(i, i+1);
                    //System.out.println("primo valore v: " + v);
                     for( int j=0;j<set.length();j++)
                     {
                      v+= set.substring(j, j+1);
                        System.out.println(v);
                        v = set.substring(i, i+1);
                    }
                }
            }
            else if(numSet == 3)
            {
                for(int i=0 ;i<set.length();i++)
                {
                    v="";
                    v += set.substring(i, i+1);
                    //System.out.println("primo valore v: " + v);
                     for( int j=0;j<set.length();j++)
                     {
                         v = set.substring(i, i+1);
                         v+= set.substring(j, j+1);
                         app= v;
                         // System.out.println(v);
                         // v = set.substring(i, i+1);
                          for(int x = 0; x < set.length() ; x++)
                          {
                              v+= set.substring(x, x+1);
                              System.out.println(v);
                               v= app;
                          }
                      }
                   
                  }
            }
            else if(numSet == 4)
            {
                String primaLett;
                String secLett;
                String terzLett;

                for(int i=0;i<set.length();i++)
                {
                    v = "";
                    v+= set.substring(i, i+1);
                    primaLett = v;
                    for(int j=0;j<set.length();j++)
                    {
                        v = primaLett;
                        v+=set.substring(j, j+1);
                        secLett = v;
                        for(int z=0;z<set.length();z++)
                        {
                            v = secLett;
                            v+= set.substring(z, z+1);
                            terzLett = v;
                            for(int x = 0; x < set.length(); x++)
                            {
                                v = terzLett;
                                v+= set.substring(x, x+1);
                                System.out.println(v);
                            }
                        }
                    }
                }
            }

        }while(numSet!=4);
        

    }
questo codice mi permette di fare le permutazioni con ripetizione fino ad una stringa lunga
4 caratteri.
il codice è molto ripetitivo e perciò ho pensato che ci dev'essere un'altra soluzione per esempio con la ricorsione.. solo che non riesco a trovare una soluzione.
qualcuno di voi mi può aiutare?
grazie mille