Complementando o que o Maniero disse, é importante ressaltar alguns pontos.

Recursão não tem nada a ver com estruturas de dados. São duas coisas que podem ser usadas juntas, mas são dois assuntos diferentes. É importante dizer isso, porque da forma que está, o texto pode confundir (principalmente iniciantes).

E como já dito, embora seja importante entender o conceito, mais importante ainda é saber quando não usar recursão. E já adianto que para a maioria dos casos mais comuns do dia a dia (ainda mais em desenvolvimento web), vc não vai precisar implementar um algoritmo recursivo. Loops simples resolvem muito bem a esmagadora maioria dos problemas que vc vai encontrar.

Vale ressaltar que em muitas situações, a versão recursiva costuma ter desempenho pior - já falei sobre o assunto aqui, aqui e aqui.

No caso de percorrer uma matriz, é claramente pior. E ainda tem o problema de poder estourar a pilha se a matriz for muito grande, já que cada chamada recursiva vai sendo empilhada e fica lá até que todas tenham terminado (a menos que haja otimização da recursão em cauda). Esse problema não ocorre se usar um loop simples (e já está explicado em detalhes nos links que indiquei acima).