У меня есть программа, как это на лабораториивычислительная сложность рекурсии
int fun(int n)
{
if (n==0) return 0;
else return fun(n-1) +1;
}
и профессор сказал, что функция O (2^п). Не могу понять, почему, каждый раз, когда я рассчитываю O, я получаю O (n)
Кто-нибудь может объяснить это мне?
это O (n) ... ваш профессор ошибается, LOL ... какой университет кстати? – Steve
теперь есть простой способ проверить, кто прав, для простых вопросов, подобных этому, вы можете просто подставить в некоторых числах и подсчитать количество операций, O (2^n) означает, что он всегда будет больше, чем c * 2^п. в этом примере c не может быть <1, поэтому, если вы добавите в 10, вы можете видеть, что это явно не так. – Steve
Ну «вот так» может быть опасно. Какую проблему вы решаете с помощью метода рекурсии? (конечно, в этом методе вы правы, это O (n)). – libik