Для домашней работы я получил следующий код Паскаля:
Program arraySum;
Procedure sum(a: Array [1..3] Of Integer);
Function sum2(low, high: Integer): Integer;
Var mid: Integer;
Begin
If low = high
Then sum2 := a[low]
Else Begin
mid := (low + high)/2;
sum2 := sum2(1, mid) {line 9}
+ sum2(mid + 1, high)
End
End;
Begin
Out("Result: ", sum2(1,3))
End;
Begin
sum([3,1,5])
End.
С вопросом:
В рекурсивных вызовах sum2 в строке 9 есть значение регистрачто должно быть сохранено?Если это так, должен ли этот регистр сохранять звонки или сохранять звонки?Объясните свой ответ.
Вопрос говорит о сохранении одного регистра, но после просмотра кода я считаю, что мне нужно сохранить два регистра, а именно средний и высокий, поскольку они необходимы для второго рекурсивноговызов.Кроме того, я бы сказал, что это сохранение вызовов, поскольку это только временные значения.Я что-то здесь не так делаю?