Il codice che va scritto nella Method Area è: 

.method fat ( n ) 
        LDC_W OBJREF 
        ILOAD n 
        LDC_W OBJREF 
        ILOAD n 
        DUP 
        IFEQ base 
        BIPUSH 1 
        ISUB 
        INVOKEVIRTUAL fat 
        INVOKEVIRTUAL mul 
        GOTO fine 
base: POP 
        BIPUSH 1 
fine:  IRETURN 
.end-method 

Il codice per la chiamata del metodo con parametro attuale 3 è il seguente: 
LDC_W OBJREF 
BIPUSH 3 
INVOKEVIRTUAL fat

--------------

Altra possibile soluzione:

.method fat (n)
   LDC_W OBJREF
   ILOAD N
   DUP
   IFEQ L1
   LDC_W OBJREF
   ILOAD N
   BIPUSH 1
   ISUB
   DUP
   IFEQ L1
   INVOKEVIRTUAL fat
   INVOKEVIRTUAL mul
   IRETURN
L1:BIPUSH 1
   IRETURN
.end-method

[Giorgio Stampa]

--------------------
Altra proposta (By Danilo Giuffrida)

.method fatt(n)
ILOAD n
BIPUSH 1
IFICMPEQ base
LDCW objref
DUP
ILOAD n
BIPUSH 1
ISUB
INVOKEVIRTUAL fatt
ILOAD n
INVOKEVIRTUAL mult
GOTO fine
base: BIPUSH 1
fine: IRETURN
.end-method
