JAVA: рекурсивная и нерекурсивная функция Фибоначчи - PullRequest
0 голосов
/ 03 апреля 2020

Привет, извините за этот нубский вопрос. Я - Марио, и могу ли я спросить, правильна ли моя программа для рекурсивной и нерекурсивной функции для n-го значения последовательности Фибоначчи.

static int recursiveMethod(int num) 
{ 
if (num <= 1) 
   return num; 
return recursiveMethod(num-1) + recursiveMethod(num-2); 
}

static int nonRecursiveMethod(int num) { 
    if (num == 0) { 
        return 0; 
    }

    if (num == 1) {
        return 1; 
    } 
    int first = 0; 
    int second = 1; 
    int nth = 1; 
    for (int i = 2; i <= num; i++) { 
        nth = first + second;
        first = second;
        second = nth;
    } 
    return nth;
}

Для резюме: Пример Я ввел 6 в качестве n-го значения. Тогда выходы являются рекурсивными: 8, затем нерекурсивными: 1 1 2 3 5 8

Это правильно?

Ответы [ 2 ]

0 голосов
/ 03 апреля 2020

да, оба подхода хороши. Здесь я хотел бы предложить вместо вызова функции для каждого «num», который вы можете предварительно вычислить и сохранить значения ( Dynami c Программирование ).

0 голосов
/ 03 апреля 2020

Вызов nonRecursiveMethod приведет к тому же результату, что и вызов recursiveMethod. Результат правильный, recursiveMethod неэффективен для больших чисел, потому что он вычисляет результаты для меньших чисел снова и снова.

...