Вы можете попытаться взглянуть на это с глазу на глаз или перейти к нему более систематически. Предполагая, что мы делаем это с нуля, мы должны попытаться построить рекуррентное отношение из определения функции.
На данный момент мы можем принять очень простую модель машины, в которой арифметические операции и поиск переменных имеют постоянное время.
Пусть iter-cost
будет именем функции, которая подсчитывает, сколько шагов требуется для вычисления iter
, и пусть это будет функция p
, поскольку завершение iter
зависит только от p
, Тогда вы сможете писать выражения для iter-cost(0)
. Вы можете сделать это для iter-cost(1)
, iter-cost(2)
, iter-cost(3)
и iter-cost(4)
?
В целом, если p
больше нуля, можете ли вы выразить iter-cost(p)
? Это будет в терминах констант и повторного вызова iter-cost
. Если вы можете выразить это как повторение, тогда вам будет легче выразить это в закрытом виде.