Ciao,
Qual'è esattamente il problema? La ricorsione in sé, la formula in particolare o la sua implementazione in asm?
La struttura (pesudocodice poco ottimizzato 386+ di quello che chiedi) dovrebbe essere all'incirca:
diciamo che in eax hai n, immagino che la ricorsione si arresti per n==2, il risultato sarà sempre in eax. D(1) e D(0) non so esattamente quanto possano valere, in caso il codice dovrà essere leggermente modificato... quello che posto ritorna 0 in questi due casi. Ovviamente non faccio niente ai registri (push/pop/impostazione di uno stack frame e simili), in caso dovrai provvedere tu...
ricors_proc
mov ebx,eax //Salvo n
cmp eax,2
jle tornaZero
dec eax //prendo n-1
call ricors_proc
mov ecx,eax //salvo D(n-1)
mov eax,ebx //Riprendo n
sub eax,2 //o due dec
call ricors_proc
add ecx,eax //in ecx ho D(n-1)+D(n-2)
xchg eax,ecx //scambio ecx con eax
dec ebx //riprendo n-1 (ebx non mi serve più)
mul ebx //moltiplico eax*ebx (n-1)*(D(n-1)+D(n-2))
jmp esci
tornaZero:
xor eax,eax
esci:
ret
ENDP
Ovviamente trasformarlo in asm 8086 non è difficile (occhio alla moltiplicazione, comunque), trasformarlo in MIPS o altri asm può richiedere un po' di lavoro in più visto che in asm x86 il primo operando è la destinazione dell'operazione e che i nomi dei registri sono diversi...
Ciaociao