Appel :Attention, parfois la procédure ne peut rendre aucun résultat. On alors coutume de renvoyer une erreur en restituant la valeur prédéfinie en maple FAIL.
proc (arg1, arg2, ...,argn) local l1,l2, ...,ln; global g1,g2,...,gn; options remember(optionel),trace(optionnel); traitement endParamètres :
arg1, arg2, ... ,argn - arguments
l1,l2, ...,ln - variables locales
g1,g2,...,gn - variables globalesExemple - Calcul de la somme des n premiers éléments d'un tableau T
somme:=proc(n) local i,s; global T; option remember; s:=0; for i from 1 to n do s:=s+T[i] od; RETURN(s) end:
Exempledivise:=proc(a,b) if b=0 then RETURN(FAIL) else RETURN(a/b) fi end: >divise(a,0); FAIL >divise(8,4); 2
u1=1Nous avons vu qu'une procédure permettant le calcul de son nième terme est :
un=un-1+n pour n > 1
La récursivité consiste à remplacer une boucle par un appel à la procédure elle-même. L'exemple ci-dessus devient :suite:=proc(n) local i,s; option remember; s:=0; for i from 1 to n do s:=s+i; od; RETURN(s) end:
Plusieurs appels à la procédure peuvent être exécutés dans son corps. Soit la suite dite de fibonacci définie par :suite:=proc(n) option remember; if n=1 then RETURN(1) else RETURN(suite(n-1)+n) fi end:
u0=1la procédure s'écrit tout aussi simplement
u1=1
un=un-1+un-2 pour n > 2
L'écriture récursive est parfois la plus naturelle!fibo:=proc(n) option remember; if (n=0) or (n=1) then RETURN(1) else RETURN(fibo(n-1)+fibo(n-2)) fi end: