Non , mais pas pour les raisons avancées par d'autres personnes. La différence entre la récursivité et l'induction n'est pas que la récursivité est "de haut en bas" et l'induction est "de bas en haut". L'induction est isomorphe à quelque chose appelé «récursion primitive», mais, en général, la récursivité est strictement plus puissante que l'induction .
La distinction entre top-down et bottom-up est triviale - tout programme récursif primitif "top-down" peut être mécaniquement converti en quelque chose de "bottom-up". En fait, toute preuve par induction peut être transformée en programme récursif. Dans le cadre du calcul des constructions inductives, si vous voulez prouver que chaque nombre naturel est froopuleux, vous l'écririez comme une fonction qui construit une preuve que n est froopuleux en faisant un appel récursif pour construire une preuve que n- 1 est froopuleux.
Le facteur clé de l'induction est que les choses sont définies en termes de plus petites choses, et qu'elles «se terminent» après un nombre fini d'étapes. Les nombres naturels sont inductifs car chaque naturel est soit 0, soit le successeur d'un plus petit naturel. Les listes sont inductives car chaque liste est soit vide, soit décomposée ("dépliée") en un élément et une liste plus petite.
Parfois, les programmes récursifs ne sont pas écrits en termes de petites choses. Par exemple, prenez cette fonction Collatz:
fun collatz(n)
if n <= 1
return 0;
else if n % 2 == 0
return 1 + collatz(n / 2)
else
return 1 + collatz(3 * n + 1)
end
Cette fonction ne va ni de haut en bas ni de bas en haut et n'est donc pas inductive sur les nombres naturels.
Il pourrait y avoir une ordonnance pour traiter cela de manière inductive, mais pour la plupart des choses, il n'y a tout simplement aucun moyen. Les fonctions sur des flux infinis en sont un excellent exemple. En fait, les flux sont l'exemple prototypique d'un type "coinductif".
Les «Fondements pratiques des langages de programmation» de Bob Harper, disponibles gratuitement en ligne, présentent une belle introduction aux types inductifs, coinductifs et récursifs.