urec(f,n,l0):={ local s,k,uk; s:=size(l0); l0:=op(l0); for (k:=s;k<=n;k++) { uk:=f(l0); l0:=tail(l0),uk; } return uk; }On utilise op au début, pour transformer la liste l0 en une séquence et tail(l0) pour enlever le premier élément et ainsi l0:=tail(l0),uk est une séquence qui a toujours s éléments.
On peut aussi considérer que le paramètre l contient toutes les variables à savoir l = f, n, u0,.., um-1 . On écrit mais c'est inutilement compliqué (!) :
urecs(l):={ local f,n,s,k,uk; f:=l[0]; n:=l[1]; l:=tail(tail(l)); s:=size(l); //f est une fonction de s variables for (k:=s;k<=n;k++) { uk:=f(l); l:=tail(l),uk; } return uk; }
Pour avoir tous les termes uk de la suite pour k allant de 0 à n,
On considère que le paramètre l contient toutes les
variables à savoir
l = f, n, u0,.., um-1.
On écrit :
urec_termes(l):={ local f,n,s,k,uk,lres; f:=l[0]; n:=l[2]; l:=tail(tail(tail(l))); s:=size(l); //f est une fonction de s variables lres:=l; for (k:=s;k<=n;k++) { uk:=f(l); lres:=lres,uk; l:=tail(l),uk; } return lres; }Par exemple on définit :
^
k),k=0..5)
Pour avoir tous les termes uk de la suite pour k allant de k0 à n,
On considère que le paramètre l contient toutes les
variables à savoir
l = f, k0, n, u0,.., um-1.
On écrit :
urec_termekn(l):={ local f,n,s,k,uk,k0,lres; f:=l[0]; k0:=l[1]; n:=l[2]; l:=tail(tail(tail(l))); s:=size(l); //f est une fonction de s variables for (k:=s;k<k0;k++) { uk:=f(l); l:=tail(l),uk; }; if k0>1 res:=NULL else if k0==0 {res:=a,b;k0:=2;} else if k0==1 {res:=b;k0:=2}; for (k:=k0;k<=n;k++) { uk:=f(l); lres:=lres,uk; l:=tail(l),uk; } return lres; }Par exemple on définit :