{ File: fattdeb.pas } { Scopo: funzione ricorsiva con ricorsione semplice; versione adatta ad essere eseguita in modalita` di debugging } program CalcoloFattoriale; { Calcola il fattoriale di un numero intero, applicando un algoritmo ricorsivo. } { Utilizza il tipo predefinito del TurboPascal longint, che permette di rappresentare interi nell'intervallo da -2^31 a 2^31-1. } var numero : longint; function Fattoriale (n: longint): longint; { Calcolo del fattoriale usando un metodo ricorsivo. Versione modificata e non ottimale che usa una variabile ausiliaria per visualizzare il risultato restituito dalla chiamata ricorsiva attraverso un debugger. } var prec : longint; begin { Fattoriale } if n = 0 then { caso base } Fattoriale := 1 else { caso ricorsivo } begin prec := Fattoriale(n - 1); Fattoriale := n * prec end end; { Fattoriale } begin { CalcoloFattoriale } numero := 0; repeat write('Immetti un numero intero nonnegativo (o negativo per terminare)! '); readln(numero); if numero >= 0 then writeln('Il fattoriale di ', numero, ' e'': ', Fattoriale(numero)); until numero < 0 end. { CalcoloFattoriale }