2013-03-02 3 views

ответ

0

Эта функция не вычисляет последовательность чисел Фибоначчи, но число вызовов последовательность Фибоначчи.

Поскольку функция не делает никакой работы, чтобы говорить о внутреннем, временная сложность такая же, как и количество вызовов.

Это O(fib N).

2

Пока число вызовов увеличивается (асимптотически) при золотом коэффициенте с увеличением k, это не последовательность Фибоначчи. Количество вызовов, для которых() выполнено для n, начинающегося с 0, равно 1, 1, 3, 5, 9, 15. Кроме того, функция what (k) равна k: -> Fib (k).

Что все выяснено, сложность остается O (Fib (n)), как указано ранее.

+0

пожалуйста, вы можете показать мне шаг для умножения (*) два функции, сложение (+) в серии фибо как -> Фибо (к-1) + Фибо (к-2) – fean

+0

@fean: Я не следую вашему вопросу. Можете ли вы расширить? –

+0

Есть ли разница между * и +, когда они располагаются в середине двух одинаковых рекурсивных функций, таких как «fib (..) */+ fib (..)», если да, то в моем коде есть оператор * вместо + который не похож на ряд Фибоначчи. – fean

0

Я думаю, что временная сложность для этого кода O (п!), так как количество вызовов умножает каждый к приращение (это очень очень плохо).

(Шутка) Но у меня есть хорошие новости! Этот код можно упростить до O (1), так как он всегда возвращает 0!

int what(int k) { return 0; } 
Смежные вопросы