Думайте просто при работе с рекурсией, т.е. пусть рекурсия сделает всю работу.Если ваша рекурсия ведет обратный отсчет, но вы хотите, чтобы список выходил по возрастанию, сначала добавьте все остальное , а затем добавьте то, над чем вы работаете:
import java.util.*;
public class Solution {
public static List<String> pattern = Arrays.asList("FizzBuzz", "", "", "Fizz", "", "Buzz", "Fizz", "", "", "Fizz", "Buzz", "", "Fizz", "", "");
public static List<String> fizzBuzz(int n) {
List<String> fbList;
if (n > 0) {
fbList = fizzBuzz(n - 1);
String string = pattern.get(n % pattern.size());
fbList.add(string.isEmpty() ? Integer.toString(n) : string);
} else {
fbList = new ArrayList<String>();
}
return fbList;
}
public static void main(String[] args) {
System.out.println(fizzBuzz(Integer.parseInt(args[0])));
}
}
OUTPUT
> java Solution 35
[1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, FizzBuzz, 16, 17, Fizz, 19, Buzz, Fizz, 22, 23, Fizz, Buzz, 26, Fizz, 28, 29, FizzBuzz, 31, 32, Fizz, 34, Buzz]
>