Non capisco questo esempio di ricorsione:

PS:
Non so fare le parentesi graffe e al posto di queste ci metto le quadre.


#include <iostream>
using namespace std;

int fact(int n);

int main()

int A

[cout << "inserisci un numero intero:\n";
cin >> A
cout << "il fattoriale di "<< A << " è :" << fact(A);
cout <<"\n";

int fact (int n)
[
int ans;
if (n==1) return(1);
ans = fact(n-1)*n;
return (ans);
]

return 0;
]

DOMANDA:
allora,
se ad A do il valore di 1,una volta entrato nella funzione fact la condizione if sarà verà e allora "attiverò" l'istruzione return(1) che restituirà a fact il valore di 1 e mi apparirà:

il fattoriale di 1 è 1


SUPPONIAMO ADESSO che A sia 4:
entro come al solito all'interno della funzione fact ma questa volta l'if non è verificato.
salto dunque l'istruzione return(1) e vado sotto.
Cosa trovo sotto???
trovo:

ans = fact(n-1)*n;
return (ans)

avrò allora,per n=4:

ans=fact(4-1)*4 cioè ans=fact(3)*4
ma a questo punto ,richiamando fact da dove riparto?
dall'inizio del blocco(riverificando la condizione if) oppure rimango in loop sull'istruzione ans = fact(n-1)*n?

Mi sfugge il meccanismo!!
potete descrivermelo step per step e farmi notare quale istruzione devo tenere sott'occhio istante per istante??
Grazie mille