Рекурсивный Fibonacci

Что касается размера, ничто не бьет SQLite.

, когда Вы относитесь об отсутствии документации, я предполагаю, что это - документ для DISQLite3. документы SQLite довольно завершены

35
задан Jonathan Leffler 5 October 2009 в 08:05
поделиться

3 ответа

Когда x == 2 вы вызываете fib (1) и fib (0) :

return fib(2-1)+fib(2-2);

Подумайте, что произойдет при вычислении fib (0) ...

150
ответ дан 27 November 2019 в 06:20
поделиться

Причина в том, что последовательность Фибоначчи начинается с двух известных сущностей, 0 и 1. Ваш код проверяет только одну из них (являющуюся одной).

Измените свой код на

int fib(int x) {
    if (x == 0)
        return 0;

    if (x == 1)
        return 1;

    return fib(x-1)+fib(x-2);
}

, чтобы включить как 0, так и 1.

40
ответ дан 27 November 2019 в 06:20
поделиться

Почему бы не использовать итерационный алгоритм?

int fib(int n)
{
    int a = 1, b = 1;
    for (int i = 3; i <= n; i++) {
        int c = a + b;
        a = b;
        b = c;
    }           
    return b;
}
11
ответ дан 27 November 2019 в 06:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: