Java: uso de la recursión para crear todas las subcadenas de una cadena

El siguiente código en Java usa la recursión para crear todas las subcadenas posibles de una cadena. Me pregunto si hay una mejor manera de codificar esto? Quiero usar la recursividad.

public class main {

    public static void main(String[] args) {
        generate("hello");
    }

    public static void generate(String word) {
        if (word.length() == 1) {
            System.out.println(word);
            return;
        }else{
            System.out.println(word);
            generate(word.substring(0, word.length()-1)); 
            generate(word.substring(1, word.length())); 
        }

    }

}

Preguntas frecuentes P: ¿Por qué quiero hacer esto usando la recursión? A - Porque el CEO de StackOverflow dice que la recursión es importantehttp://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html

Respuestas a la pregunta(5)

Su respuesta a la pregunta