2003/04 – Fase scolastica – 03

Si considerino le due seguenti funzioni:

Function A(n: Integer): Integer;
Begin
   If n > 0 Then
      A:=n+A(n-1)
   Else
      A:=0
End;
 
function B(n: integer): integer;
begin
   B := (n*(n+1) div 2)
end;

Quale delle seguenti affermazioni è vera?

Risposte:

  1. la funzione A calcola il fattoriale di un numero mentre la funzione B calcola la sommatoria di tutti i numeri compresi fra 1 ed n.
  2. sia la funzione A che la funzione B calcolano la sommatoria di tutti i numeri compresi fra 1 ed n, assumendo n maggiore o uguale a 1.
  3. la funzione A e la funzione B calcolano esattamente la stessa funzione.
  4. nessuna delle precedenti affermazioni è vera.

Soluzione: b.


Soluzione

Si tratta di riconoscere semplici algoritmi e formule di base; nel caso specifico della funzione A l’algoritmo ricorsivo che calcola la somma dei naturali da 1 ad n.
Nel caso della funzione B occorre riconoscere la formula di Gauss per lo stesso calcolo.