Skocz do zawartości


Zdjęcie

[Inne] Rekurencja działanie


  • Zaloguj się, aby dodać odpowiedź
2 odpowiedzi w tym temacie

#1 proquest

proquest

    Początkujący

  • 52 postów

Napisano 18 11 2010 - 16:01

Witam, wiem, że rekurencja to wywołanie samej siebie, ale nie mogę pojąć jak to się dzieje dokładnie:

Function fibonacci(ilosc:integer):integer;
    Begin
          If (ilosc=1) Or (ilosc=0) Then fibonacci:=1

          else  fibonacci:=fibonacci(ilosc-1)+fibonacci(ilosc-2);

    End;

No i podaję wartość 4 wchodzi w funkcję i co dalej?

  • 0

#2 piatkowski

piatkowski

    Nowy

  • 1 postów

Napisano 19 11 2010 - 19:07

Zamiast tego warunku daj ilosc<2.
Miałeś na matematyce w szkole średniej pojęcie ciągu rekurencyjnego?

fib[n] = fib[n-1]+fib[n-2] //każdy kolejny element to suma dwóch poprzednich

fib[4] = fib[3]+fib[2]
fib[3] = fib[2]+fib[1]
fib[2] = fib[1]+fib[0] = 1 + 1
fib[1] = 1 //to wiemy z warunku
fib[0] = 1 //to tez
fib[2] = 1+1=2
fib[3] = 2+1=3
fib[4] = 3+2=5

wynik: 1,1,2,3,5

  • 0

#3 krzysztofsz

krzysztofsz

    Początkujący

  • 11 postów

Napisano 10 01 2011 - 21:57

Mi zawsze pomaga rozrysowywanie sobie drzewka wywołań funkcji. Tzn wstawiasz sobie jakieś wartości do pierwszej funkcji i w miejscach w których się wywołuje, rysuję kolejne bloczki. Tu jest fibbonacci:
http://upload.wikimedia.org/wikipedia/commons/thumb/a/a3/Call_Tree_for_Fibonacci_Number_F6.svg/300px-Call_Tree_for_Fibonacci_Number_F6.svg.png

  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych