Я не знаком с синтаксисом SQL, поэтому я просто попытаюсь объяснить как можно лучше.
В случае линейной рекурсии, как этот (т.е. только один рекурсивный вызов за раз), способ перевести его в итеративную функцию, чтобы думать наоборот рекурсивным стилем.Вместо того чтобы начать с Nro и перейти к 1, вы можете начать с 1 и перейти к Nro.
Таким образом, в итерационном методе result
начинается с 1. Затем вы можете выполнять итерацию из2 до нро.В каждой итерации вы удваиваете результат, а затем добавляете один.
Вот еще одна возможная перспектива.В рекурсивном стиле у вас есть Nro число вызовов вложенных функций.Когда завершается самый глубокий (то есть, когда Nro равен 1), может завершиться следующий восходящий (когда Nro равен 2), а затем следующий, и он продолжает всплывать, пока вы не вернетесь к исходному вызову.Итерационный метод следует за пузырящимся поведением (насколько порядок вычислений идет).Барботирование начинается с 1 - итерация тоже.Пузырьки также заканчиваются в Nro, точно так же, как итерации.
Итерации фактически не делают ничего из этого "пузыривания", и понятия не зависят друг от друга.Но это может помочь начать думать, по крайней мере, пока вы делаете этот переход.