Hvordan skrive en kode i C ++ Bruke Lucas Series

Evnen til å tenke rekursivt er svært viktig for programvareutviklere. En rekursiv programvare rutine gjentar ved å referere til seg selv på et tidspunkt. En slik rutine har en base sak som ender rekursjon og hindrer rutine fra å bære på ubestemt tid. De fleste programmerere lære å kode Fibonacci Sequence når de lærer rekursjon. En svært lik tallrekke er Lucas-serien, og det kan løses rekursivt også. Den Lucas serien begynner med tallene 2 og 1. Hvert påfølgende nummer i rekken er summen av de to foregående - for eksempel, er den tredje nummer 3 (1 + 2), etterfulgt av 4 (3 + 1), etterfulgt av 7 (4 + 3), og så videre.

Bruksanvisning

1 Start din C ++ IDE og opprette en ny C ++ kildekode fil.

2 Lag en funksjon som heter Lucas. Den viktigste delen av programmet vil mate lucas et tall, og forventer lucas å passere en rekke tilbake til det. Denne syntaksen oppnås ved å skrive noe sånt som dette:

int lucas (int x)

{

}

3 Sett opp første base case. Den første basistilfelle oppstår når antallet tilførsel til Lucas funksjon er 0. Resultatet av denne sender ut den verdi 2 til hoved. Du kan oppnå dette ved å legge en "hvis" statement til innsiden av klammeparentes av lucas funksjon, som dette:

if (x == 0) {return to; }

4 Sett opp andre base case. Den andre basistilfelle oppstår når antallet tilførsel til Lucas funksjon er 1. Resultatet av denne sender ut den verdi en til hoved. Du kan skrive denne "else-if" statement som dette, under "hvis" statement fra trinn 3:

else if (x == 1) {return 1; }

5 Sett opp rekursive kall. Denne samtalen vil kalle lucas funksjonen selv to ganger, og legger resultatet av de to foregående resultatene i Lucas-serien sammen. Dette rekursive kall kan se slik ut, og går under "if-else" statement i trinn 4:

else {retur lucas (x - 1) + Lucas (x - 2); }

6 Ring lucas i den viktigste funksjonen. Du vil plassere din viktigste funksjon under den ferdige lucas funksjon, utenom sine klammeparenteser. Hele hovedfunksjonen skal se slik ut:

int main ()

{int y = Lucas (7); cout << y << endl; returnere 0; }

7 Kompilere og kjøre dette programmet (mange utviklingsmiljøer oppnå dette ved å trykke F5). Utgangen av programmet vil være de første åtte tallene i Lucas Series: 2, 1, 3, 4, 7, 11, 18, 29.

Hint

  • Dette programmet er meget ineffektivt for å være enkel. Store mengder vil generere mange tusen identiske rekursive samtaler. Ved å memorere resultatene som programmet fortsetter, kan det gjøres betydelig mer effektivt.