Home • ECDL • Algoritmi • Java • Basi di dati • Seconda prova • Eccetera • Cerca nel sito

Prodotto ricorsivo

Precedente
SUPERIORE
Successiva

Soluzione iterativa

M*N = 0                      N = 0
M*N = M+M+...+M (N addendi)  altrimenti

Codifica

function ProdIter(M, N: Integer): LongInt;
Var
   I: Integer;
   Risp: LongInt;
begin
   Risp:=0;
   for I:=1 to N do
      Risp:=Risp+M;
   ProdIter:=Risp;
end;

oppure

M*N = 0           N = 0
M*N = IncN(0, M)  altrimenti

Codifica

function ProdIter(M, N: Integer): LongInt;
Var
   I: Integer;
   Risp: LongInt;
begin
   Risp:=0;
   for I:=1 to N do
      Inc(Risp, M);
   ProdIter:=Risp;
end;

Soluzione ricorsiva

Prod(M, N) = 0               N = 0
Prod(M, N) = Prod(M, N-1)+M  altrimenti

Esempio: M=5, N=3

Prod(5, 3) = Prod(5, 3-1)+5 = Prod(5, 2)+5 = 10+5 = 15
Prod(5, 2) = Prod(5, 2-1)+5 = Prod(5, 1)+5 = 5+5  = 10
Prod(5, 1) = Prod(5, 1-1)+5 = Prod(5, 0)+5 = 0+5  = 5
Prod(5, 0) = 0

Codifica

function ProdRic(M, N: Integer): LongInt;
begin
   if(N = 0) then
      ProdRic:=0
   else
      ProdRic:=ProdRic(M, N-1)+M;
end;

Prodotto ricorsivo - ApPuNtIdIuNiNfOrMaTiCo

Home • ECDL • Algoritmi • Java • Basi di dati • Seconda prova • Eccetera • Cerca nel sito

Precedente
SUPERIORE
Successiva