2015-09-12 4 views
0

В чем смысл того, когда рекурсивный алгоритм не всегда достигает всех функций на каждом уровне? Рассмотрим этот код:Рекурсия без выполнения всех методов при каждом рекурсивном вызове

function f(value): 
    if val < -10 return g(value + 1) 
    if var > 10 return h(value - 1) 
    else return 0 

function g(value): 
    if value % 2 == 0 return f(value/2) 
    else return h(value) 

function h(value): 
    if value % 2 == 1 return g(value - 1) 
    else return h(value - 1) 

Каждый рекурсивный вызов может вызывать другую функцию, например, когда мы начинаем с 15:

f(15) 
    h(14) 
    h(13) 
     g(12) 
     f(6) 
      return 0 

ответ

0

Я никогда не слышал о конкретном плане для того, что вы описали, это просто называемой рекурсией.

Тот факт, что он выполняет потенциально различные пути для определенных уровней рекурсии реально не делает его особенным, больше, чем та же функция в цикле:

for i = 1 to 10: 
    if i is even: 
     print i, " is even" 
    else: 
     print i, " is odd" 

Это все еще называется петлей (не то, как «чередующийся цикл» или «зависящий от итерации поведенческий цикл»). Это похоже на ваш пример рекурсии.

Фактически, рекурсия всегда имеет по-разному поведение, по крайней мере, на одном уровне (последний), так как без этого он будет повторяться навсегда, и вы, скорее всего, переполнили бы стек.

Смежные вопросы