Меня попросили написать функцию fib наиболее эффективным способом?
Это реализация, которую я предоставил:
public static int fib(int n)
{
int prev1 = 1, prev2 = 1, ans = 1, i = 3;
while (i <= n)
{
ans = prev1 + prev2;
prev1 = prev2;
prev2 = ans;
i++;
}
return ans;
}
Это наиболее эффективно?Что такое большой заказ?
Меня также попросили дать большое обозначение рекурсивной реализации:
public static int recursiveFib(int n)
{
if (n <= 2)
return 1;
else
return recursiveFib(n-1) + recursiveFib(n - 2);
}
Я думаю, что это экспоненциальное 2 ^ n, поэтому оно неэффективно.