d'où le programme :
function chiffres(s, k: integer): boolean;
begin
if s=0 then
chiffres:= true
else if (s<0) or (k>n) then
chiffres:= false
else
if chiffres(s-w[k],k+1) then
begin
writeln(w[k]);
chiffres:= true
end
else
chiffres:= chiffres(s, k+1)
end;