У меня есть этот взаимно-рекурсивный код в java, интересно, какова временная сложность этого кода. Я предполагаю, что O (2^n), хотя, поскольку для метода G return (n-1) + G (n-1) делится на 2 во время каждого вызова. Или это часть O (n)? Я не уверен в этом.Сложность времени этого взаимно-рекурсивного кода
public static int F(int n)
{
if (n <= 1)
return 1;
else if (n % 2 == 0)
return n + F(n/2);
else
return G(n-1)-n;
}
public static int G(int n)
{
if(n <= 1)
return 1;
else if (n % 2 == 0)
return F(n-1) + G(n-1);
else
return F(n-3);
}
Это будет что-то большее (n!)? –