Порядок выполнения для рекурсивного метода Фибоначчи - PullRequest
2 голосов
/ 04 июля 2011

ex:

public static int fibb (int n) {
    if(n==0||n==1)
        return 1;
    else{
        return fibb(n-1)+fibb(n-2);
      }
}

Как будет выполняться строка fibb(n-1)+fibb(n-2) .. как будет fibb(n-1) закончить первым при запуске fibb(n-2) или как именно, я довольно новичок в рекурсии и могуКажется, я не понимаю, как это работает.

Помощь оценена.

Ответы [ 2 ]

2 голосов
/ 04 июля 2011

Сначала будут выполняться рекурсивные вызовы (порядок, в котором они зависят от вашего языка программирования), затем их результаты будут суммироваться.

1 голос
/ 04 июля 2011
 fibb(3) returns fibb(2)                                +  fibb(1)
                 fibb(2) returns fibb(1) + fibb (0)

 so you get                         1     +     1       +       1   = 3



 fibb(4) returns fibb(3) + fibb(2), we know fibb(3) returns three from above,
 fibb(2) returns fibb(1) + fibb(0) also from above, 

 so fibb(4) returns 3 + 2 = 5

Важно отметить, что в этой реализации вы должны дважды за каждым предыдущим числом Фибоначчи вычислять компьютер.Что означает, что к тому времени, когда вы доберетесь до ~ 20 (угадайте), оно станет ОЧЕНЬ медленным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...