Trace code pascal [chiuso]

0

Non ho ancora lavorato con Pascal, e il mio problema è capire gli aspetti ricorsivi che gli operatori di assegnazione di prm e come il valore finale (corretto) è derivato. Qualcuno potrebbe spiegarmi quella frase per me.

Program test(output);

FUNCTION prm(az:integer) : real;
begin
    if az = 1 then
        prm := sqrt(12)
    else
        prm := sqrt(12*prm(az-1));
end;

begin
    writeln(prm(30):0:2);
end.
    
posta mghaffari 27.10.2013 - 19:37
fonte

1 risposta

3

Questa è una funzione ricorsiva in pascal. Il valore "restituito" a cui piacciono le persone con cui la lingua è familiare viene invece assegnato assegnando un valore al valore psuedo del nome della funzione stesso.

Quando viene passato un parametro di 1, restituisce la radice quadrata di 12.

Quandovienepassatounparametrodi2,restituiscelaradicequadratadi12voltelaradicequadratadi12(ilvaloreèstatopassatocon1).

Quando viene passato un parametro di 3, restituisce la radice quadrata di 12 volte il valore quando è stato passato con 2.

E così via ...

    
risposta data 27.10.2013 - 20:39
fonte

Leggi altre domande sui tag