Samotný kód metody jsem nijak neměnil. A jinak je tam pouze jiná inicializace pole a počet předávám přímo pomocí čísla ne proměnné, ale ani jedno z toho ve výsledku nemá žádný vliv.
var charArray = new char[]{'a', 'b', 'c', 'd'};
var variation = getVariation(charArray, new ArrayList<>(), 14, "");
System.out.println(variation.size());