У меня есть проблема при попытке рассчитать сложность времени для этого кода:
function foo (int a):
if a < 1:
return 1
else:
for i = 1 to 4:
foo(a - 3)
for i = 1 to 4:
foo(a / 2)
end function
Насколько я могу идти:
T(n) = 1 if n<1
T(n) = 4T(n-3) + 4T(n/2) if n>=1
= 4(4T(n-6) + 4T((n-3)/2)) + 4(4T(n/2 - 3) + 4T(n/4))
~ 4^2 (T(n-6) + T((n-3)/2) + T(n/2-3) + T(n/4))
Теперь это очень сложно, так как число следующего увеличения T на 2 ^ n, а также ребенка довольно сложно.
Есть ли другие способы решения этой проблемы?