Je ne sais pas quoi répondre.
Tu n'utilises pas la récursivité pour calculer fib(n-1) + fib(n-2) ce qui rendrait la fonction C identique à la définition mathématique mais donnerait un truc complètement exponentiel ; tu utilises la récursivité pour remplacer la boucle for (i=0; i < n; i++) { additionner et décaler les élément }. Oui, c'est effectivement ce que tu dis quand tu parles de "remplacer les boucles" mais tu détournes radicalement le but de la récursivité !!!
La récursivité a été créée pour simplifier une tâche complexe. Au lieu de calculer n, je calcule un m inférieur et quand j'ai finit ce calcul, j'intègre le résultat au calcul de n. Et si le calcul de "m" est encore trop complexe, alors rebelote.
C'est ce principe qui permet de montrer le calcul de la factorielle (pour calculer 10 il faut commencer par calculer 9), le calcul de fibonacci (pour calculer 10 il faut d'abord calculer 9 et 8), que j'ai utilisé pour résoudre le jeu "le compte est bon" (pour trouver 123 avec 1, 2, 3, 4, 5 et 6 je regarde si je peux trouver 123 avec 3, 3, 4, 5 et 6). Y recourir ça amène très souvent le mal (comme l'a dit Stellar7) mais on ne peut parfois pas faire autrement. Et même parfois quand on ne peut pas faire autrement, on ne peut pas non plus faire avec (suffit de regarder le code de la fonction Ackerman dont j'ai déjà parlé).
Mais même si la récursivité le permet, jamais elle n'a été créée dans le but de remplacer une simple boucle !!! Si on peut le faire avec une récursivité qui remplace la boucle alors autant le faire tout simplement avec la boucle (cf code de droggo) Ce sera plus simple à écrire et plus simple à lire
Ceci dit, c'était un bel exercice de style :applo: