Discussione qualcuno riesce a farmi MCD IN F#

Premetto che non conosco F#, ma essendo un linguaggio funzionale dovrei riuscirti ad aiutare a comprenderne la logica con un po' di pseudocodice.

La prima domanda che devi porti è: "qual'è il caso base?" ovvero, a quale interrogazione la funzione restituisce immediatamente un valore?

Il caso base è il caso in cui si chiede il massimo comun divisore fra un qualsiasi numero x e 0, formalmente mcd(x, 0)

Adesso dobbiamo pensare al passo induttivo. Fortunatamente la funzione mcd è stata assai studiata e ne conosciamo una definizione ricorsiva per cui possiamo subito concludere che il passo induttivo è mcd(y, r), con x = q*y + r e 0 <= r < y. In generale nel passo induttivo devi individuare una strategia per ricondurti, prima o poi, al passo base, in cui terminerà la funzione ricorsiva.

Lo pseudocidce diventa quindi
MCD(x, 0) -> X MCD(X,Y) -> MCD(Y, X%Y), se y != 0

Spero di averti aiutato e che quanto detto sia applicabile in modo sensato al F#.
Rimango a disposizione in caso di dubbi.
 
  • Mi piace
Reazioni: Mat D leo