Lua: Le tutoriel  wxWidgets
Lua
Les fonctions: Les appels récursifs.

Un appel récursif, est un appel qui peut se répéter un nombre indéfini de fois.

Ceci peut se passer, lorsqu'une fonction appelle une autre fonction, lors de sa dernière action.

L'exemple suivant est un appel récursif.

	function f(x)
	  return g(x) -- appel récursif
	end
				

L'appel à g(x) est la dernière action de la fonction f(x), car après, il n'y a rien d'autre à faire: c'est donc bien "un appel récursif".

Dans cette situation, le programme n'aura pas besoin de revenir à la fonction d'appel, (puisqu'il n'y a rien d'autre à accomplir) et de ce fait ne conservera aucune information dans la pile.

Puisqu'un appel récursif n'utilise pas d'espace de pile, cela signifie qu'il n'y a plus de limite de 'boucle' et que la fonction ne sera jamais débordée.

Aussi, la fonction suivante boucle sans fin et sans "stack overflow"...

	function f1(n)
	  if n > 0 then return f1(n - 1) end
	end
				

Mais attention tout de même, ce qui suit n'est pas un appel récursif.

	function f1(x
	  g(x)
	  return
	end
				

Car après l'appel à g(x), la fonction f(x) a encore une chose à faire: un return.

Avec LUA seul un appel return g(...) est un appel récursif.

Puisque que g et ses arguments peuvent-être très complexes.
Exemple: return x[i].f1(x[j] + a*b, i + j)

L'appel récursif est similaire au goto du basic, un renvoi qui ne nécessite pas de retour automatique.

logo wxWidgets Le savoir ne vaut que s'il est partagé par tous...
logo-internet_32x32.png Dernière mise à jour, le 20 novembre 2012.
Valid XHTML 1.0 Transitional

wxlualogo
Flèche haut
Flèche gauche
Flèche haut
Flèche droite
Connexion à la base de données impossible