La sequenza di Perrin aiuta c ++

0

Ciao a tutti sto cercando di scrivere una funzione ricorsiva per una sequenza di perrin in cui restituisce l'ennesimo termine in cui un utente entra che è:

P(0) = 3, P(1) = 0, P(2) = 2,

e

P(n) = P(n − 2) + P(n − 3) for n > 2.

La sequenza dei numeri di Perrin inizia con

3, 0, 2, 3, 2, 5, 5, 7, 10, 12, 17, 22, 29, 39 ...

So che dovrei inserire una sorta di codice qui ma sono completamente perso. Abbiamo appena appreso le funzioni ricorsive questa settimana e non riesco a capire come farlo.

    
posta botfupanda 15.02.2015 - 18:59
fonte

1 risposta

1

Questo potrebbe essere un buon modo per iniziare con TDD.

  • Prima scrivi il metodo p in questo modo restituisce 3 se l'argomento è uguale a 0
    • Lo asserisci controllando se p (0) == 3
    • esegui il programma
  • Quindi modifichi il metodo p che restituisce 0 se l'argomento è uguale a 1
    • Lo asserisci controllando se p (1) == 0
    • esegui il programma (potresti indovinarlo)
  • Quindi modifichi il metodo p che restituisce 2 se l'argomento è uguale a 2
    • Lo affermi verificando se p (2) == 2
    • esegui il programma (potresti già averlo indovinato)

Piccolo suggerimento: tutti i controlli / test devono essere a posto - non in serie, ma tutti insieme.

Sì, hai fatto la prima parte per i primi tre numeri.

  • quindi modifichi il metodo per inserire un ramo speciale se n è maggiore di 2
    • Ora arriva la parte interessante su cosa tornare qui?
    • scrivi un test che asserisce che p (3) == 3
    • prova qualcosa per fargli restituire il valore 3
    • potrebbe semplicemente restituire p (0)
    • esegui il programma (probabilmente lo hai già indovinato)
  • scrivi un test che asserisce che p (4) == 2
    • fallisci, ora prova qualcos'altro
    • restituisce la somma di p (n-2) e p (n-3)
    • esegui il programma (fatto?)
    • asserire più valori ....
    • esegui il programma (dovresti saperlo adesso).
risposta data 15.02.2015 - 19:22
fonte

Leggi altre domande sui tag