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:
Exemple
divise:=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
suite:=proc(n)
local i,s;
option remember;
s:=0;
for i from 1 to n do
s:=s+i;
od;
RETURN(s)
end:
La récursivité consiste à remplacer une boucle par un appel à la procédure elle-même.
L'exemple ci-dessus devient :
suite:=proc(n)
option remember;
if n=1 then RETURN(1) else RETURN(suite(n-1)+n) fi
end:
Plusieurs appels à la procédure peuvent être exécutés dans son corps. Soit la suite dite de
fibonacci définie par :
u0=1la procédure s'écrit tout aussi simplement
u1=1
un=un-1+un-2 pour n > 2
fibo:=proc(n)
option remember;
if (n=0) or (n=1) then RETURN(1) else RETURN(fibo(n-1)+fibo(n-2)) fi
end:
L'écriture récursive est parfois la plus naturelle!