Qual é a diferença entre iteração e recursão?

Qual é a diferença entreiteration erecursion e porque / quando é melhor:

while (true) {
    // Iterating
}

E

private void recursion() {
    if (true)
        recursion(); // Recursing

    return;
}

Eu vejo muitorecursive implementação enquanto poderia ser feito facilmente em um loop simples.