Вот только комплексное число в комплексной степени — это не число, потому что возведение в комплексную степень — многозначная функция (поскольку логарифм — многозначная функция).
Например, i^i = e^(Ln(i) * i) = e^-((pi/2)+2*k*pi), k — любое целое.
И вообще, раз уж приведен рекурсивный вариант поиска функции на отрезке, то и модификацию наверное тоже имело смысл написать рекурсивно.
Идея такая:
modify(pos,val,l = 0,r = MAX_N-1,p=1)
...if (l==r) tree_data[p] = val;
...else
......m = (l+r)/2;
......if pos <= m
.........modify(pos,val,l,m,p*2);
......else
.........modify(pos,val,m+1,r,p*2+1);
......treedata[p] = max(treedata[2*p], treedata[2*p+1])
Я не пытаюсь что-то доказать автору, но всё же вместо «безрекурсивного поиска в глубину» было бы проще и правильнее написать поиск в ширину, который «безрекурсивный» сам по себе.
upd. Sirian обновил аксиоматику комментарием выше, теперь всё хорошо :)
Например, i^i = e^(Ln(i) * i) = e^-((pi/2)+2*k*pi), k — любое целое.
Идея такая:
modify(pos,val,l = 0,r = MAX_N-1,p=1)
...if (l==r) tree_data[p] = val;
...else
......m = (l+r)/2;
......if pos <= m
.........modify(pos,val,l,m,p*2);
......else
.........modify(pos,val,m+1,r,p*2+1);
......treedata[p] = max(treedata[2*p], treedata[2*p+1])