Como funciona a recursão em um Java 8 Strea
Eu tenho um método como este em que estou usando a recursão com Streams:
private static List<Member> convertToFlatList(List<Member> memberList)
{
return memberList.stream().flatMap(i -> Stream.concat(Stream.of(i), convertToFlatList(i.getChildren()).stream())).collect(Collectors.toList());
}
Vamos dizer umMember
classe @ tem uma lista de filhos de membros que sempre é inicializada em uma lista vazia. Aqui, o que estou fazendo é converter a lista hierárquica de membros em uma lista simples. Eu entendo essa parte. O que não entendo é como a recursão funciona aqui.
Na recursão, é encerrado quando determinadas condições são atendidas. Mas aqui não estou dando nenhuma condição para terminar intencionalmente. Então, como a parte de terminação funciona aqui?