Forstå rekursjon og rekursiv formel

køyring

Iterasjon er gjentakelse av en prosess. En student som går på skole, gjentar prosessen med å gå til skolen hver dag til eksamen. Vi går til matbutikk minst en eller to ganger i måneden for å kjøpe produkter. Vi gjentar denne prosessen hver måned. I matematikk følger en Fibonacci-sekvens også egenskapene til oppgaveoppretting. La oss se på Fibonacci-sekvensen der de to første tallene er 0 og 1, alle andre tall er summen av de to foregående tallene.

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89

Iterasjonstrinn

Fibonacci-formelen kan skrives som,

F (n) = F (n - 1) + F (n - 2)
fibonacci (0) = 0
fibonacci (1) = 1
fibonacci (2) = fibonacci (1) + fibonacci (0) = 1 + 0 = 1
fibonacci (3) = fibonacci (2) + Fibonacci (1) = 1 + 1 = 2
fibonacci (4) = fibonacci (3) + Fibonacci (2) = 2 + 1 = 3
fibonacci (5) = fibonacci (4) + Fibonacci (3) = 3 + 2 = 5
fibonacci (6) = fibonacci (5) + Fibonacci (4) = 5 + 3 = 8

Algoritmen gitt nedenfor returnerer nte Fibonacci nummer.

rekursjon

Hver gang vi får et nytt Fibonacci nummer (nth nummer), er nth nummer faktisk (n - 1) tallet når vi finner (n + 1) th Fibonacci som vår neste nth Fibonacci. Som vi ser trinnene som er nevnt ovenfor, hvis n = 2 da
fibonacci (2) = fibonacci (2 - 1) + fibonacci (2 - 2) = fibonacci (1) + Fibonacci (0) = 1 + 0 = 1

Nå vil vi generere fibonacci (3), det vil si n = 3.

fibonacci (3) = fibonacci (3 - 1) + fibonacci (3 - 2) = Fibonacci (2) + Fibonacci (1) = 1 + 1 = 2
Det betyr at hver gang n øker verdien av nåværende (n - 1) th og (n - 2) th fibonacci øker også. Men det er trøtt å holde styr på (n - 1) th og (n - 2) th fibonacci for hver n. Hva med å skrive en metode som kaller seg for å gjenta iterasjonens oppgave av seg selv?

En metode som kaller seg, heter som rekursiv metode. En rekursiv metode må ha en grunnleggende sak hvor programmet slutter å kalle seg. Vår basis sak for Fibonacci-serien er fibonacci (0) = 0 og fibonacci (1) = 1. Ellers kaller Fibonacci-metoden seg to ganger - fibonacci (n - 1) og fibonacci (n - 2). Deretter legger det til at de skal få fibonacci (n). En rekursiv metode for å finne nth Fibonacci kan skrives som -

PRO TIPS: Hvis problemet er med datamaskinen eller en bærbar PC / notatbok, bør du prøve å bruke Reimage Plus-programvaren som kan skanne arkiver og erstatte skadede og manglende filer. Dette fungerer i de fleste tilfeller der problemet er oppstått på grunn av systemkorrupsjon. Du kan laste ned Reimage Plus ved å klikke her

Hvis vi ser nøye ut, følger rekursjon egenskapen til stabelen. Det løser mindre delproblemer for å få løsningen på et problem. For n> 1, kjører den siste linjen. Så, hvis n = 6, kaller funksjonen og legger fibonacci (6 - 1) og fibonacci (6 - 2). fibonacci (6 - 1) eller fibonacci (5) kaller og legger til fibonacci (5 - 1) og fibonacci (5 - 2). Denne rekursjonen fortsetter til 6 når ned til basisverdien som er fibonacci (0) = 0 eller fibonacci (1) = 1. Når den treffer basissettet, legger den to grunnverdier og går opp til den får verdien av fibonacci ( 6). Nedenfor er en trerepresentasjon av rekursjon.

rekursjonstreet

Som vi kan se, hvor kraftig en rekursjon kan være. Bare en enkelt linje med kode gjør treet over (siste linje i koden ovenfor, inkludert basissaker). Rekursjon opprettholder en stabel og den går til dypere til den når basen. Dynamisk programmering (DP): Rekursjon er lett å forstå og kode, men kan være dyrt når det gjelder tid og minne. Ta en titt på rekursjonstreet nedenfor. Den venstre deltre som begynner med fib (4) og høyre undertreet som begynner med fib (4), er akkurat det samme. De genererer det samme resultatet som er 3, men har samme oppgave to ganger. Hvis n er et stort tall (eksempel: 500000), kan rekursjon lage et program veldig sakte som det ville kalle samme underoppgave flere ganger.

rekursjon Tree-sirklet

For å unngå dette problemet, kan dynamisk programmering brukes. I dynamisk programmering kan vi bruke tidligere løst underoppgave for å løse fremtidig oppgave av samme type. Dette er en måte å redusere oppgaven for å løse opprinnelige problemet. La oss ha en array fib [] der vi lagrer tidligere løste subtask løsninger. Vi vet allerede at fib [0] = 0 og fib [1] = 1. La oss lagre disse to verdiene. Nå, hva er verdien av fib [2]? Siden fib [0] = 0 og fib [1] = 1 har blitt lagret, må vi bare si fib [2] = fib [1] + fib [0] og det er alt. Vi kan generere fib [3], fib [4], fib [5], fib [n] på samme måte. Tidligere løste deltakere blir kalt for å få neste deloppgave til den opprinnelige oppgaven ikke er løst, og dermed reduserer redundant beregning.

PRO TIPS: Hvis problemet er med datamaskinen eller en bærbar PC / notatbok, bør du prøve å bruke Reimage Plus-programvaren som kan skanne arkiver og erstatte skadede og manglende filer. Dette fungerer i de fleste tilfeller der problemet er oppstått på grunn av systemkorrupsjon. Du kan laste ned Reimage Plus ved å klikke her

Facebook Twitter Google Plus Pinterest