Пусть M (n) будет числом умножений, которое выполняет функция fct.
//precondition: n>0
int fct (const int A[], int n) {
if (n==1)
return A[0]*A[0];
else return A[n-1] * fct(A,n-1) * A[n-1];
}
записать рекуррентное соотношение для M (n), где n — количество элементов в массиве
Решите рекуррентное соотношение, чтобы получить M (n) через n
Запишите полученное выражение части 2 в больших обозначениях O
Так что это был тест, и у меня есть ключ ответа, но я не очень уверен, как это было вычислено, M (n) = 2n-1 с O (n). Я не знаю, как это было определено, кто-то может объяснить? Спасибо
Давайте посмотрим, что делает каждый звонок. Каждый звонок, когда n> 1,
Поэтому мы можем записать повторение как
Если вы используете метод итерации, вы заметите этот шаблон:
Теперь, когда у вас есть это, вы можете написать это асимптотически как M (n) = Θ (n).
Надеюсь это поможет!
Других решений пока нет …