|
Soluzione iterativaM+N = M+1 ... +1 (N volte) oppure M+N = ((...((M+1)+1)...)+1) oppure Somma(M, N) = Succ(Succ(...Succ(M)...)) oppure Somma(M, N) = SuccN(M) codifica function SomIter(M, N: LongInt): LongInt; Var I: LongInt; begin for I:=1 to N do Inc(M); // M:=M+1; // M:=Succ(M); SomIter:=M; end; oppure apri M dita della mano destra apri N dita della mano sinistra mentre la mano sinistra non è chiusa esegui ( apri un dito a destra chiudi un dito a sinistra ) la risposta è nella mano destra codifica function SomIter(M, N: LongInt): LongInt; begin While(N > 0) do Begin Inc(M); Dec(N); End; SomIter:=M end; codifica function SomIter(M, N: LongInt): LongInt; Var I: LongInt; begin for I:=N DownTo 1 do Inc(M); SomIter:=M; end; Soluzione ricorsivaSomma(M, N) = M N = 0 Somma(M, N) = Somma(M, N-1)+1 altrimenti Esempio: M=5, N=3 Somma(5, 3) = Somma(5, 2)+1 = 7+1 = 8 Somma(5, 2) = Somma(5, 1)+1 = 6+1 = 7 Somma(5, 1) = Somma(5, 0)+1 = 5+1 = 6 Somma(5, 0) = 5 codifica function SomRic(M, N: LongInt): LongInt; begin if(N = 0) then SomRic:=M else SomRic:=SomRic(M, N-1)+1; end; oppure Somma(M, N) = M N = 0 Somma(M, N) = Succ(Somma(M, Pred(N))) altrimenti Esempio: M=5, N=3 Somma(5, 3) = Succ(Somma(5, Pred(3)) = Succ(Somma(5, 2)) = Succ(7) = 8 Somma(5, 2) = Succ(Somma(5, Pred(2)) = Succ(Somma(5, 1)) = Succ(6) = 7 Somma(5, 1) = Succ(Somma(5, Pred(1)) = Succ(Somma(5, 0)) = Succ(5) = 6 Somma(5, 0) = 5 codifica function SomRic(M, N: LongInt): LongInt; begin if(N = 0) then SomRic:=M else SomRic:=Succ(SomRic(M, Pred(N))); end; oppure Somma(M, N) = M N = 0 Somma(M, N) = Somma(M+1, N-1) altrimenti codifica function SomRic(M, N: LongInt): LongInt; begin if(N = 0) then SomRic:=M else SomRic:=SomRic(M+1, N-1); end; oppure Somma(M, N) = M N = 0 Somma(M, N) = Somma(Succ(M), Pred(N)) altrimenti Esempio: M=5, N=3 Somma(5, 3) = Somma(Succ(5), Pred(3)) = Somma(6, 2) = 8 Somma(6, 2) = Somma(Succ(6), Pred(2)) = Somma(7, 1) = 8 Somma(7, 1) = Somma(Succ(7), Pred(1)) = Somma(8, 0) = 8 Somma(8, 0) = 8 Codifica function SomRic(M, N: LongInt): LongInt; begin if(N = 0) then SomRic:=M else SomRic:=SomRic(Succ(M), Pred(N)); end; |
|