2013-11-25 2 views
1

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

int func001(int x){ 

    if(x>=1) func003(x-1); 

} 
int func003(int y){ 

    if(y>=2) func001(y-1); 

} 
+0

Где вы видите этот код? Какая проблема заключается в ее решении в исходном источнике? Как бы то ни было, этот код на самом деле мало что делает. Он просто продолжает называть эти две функции вперед и назад с меньшими и меньшими значениями 'x' /' y', пока не достигнет 1 или 0, в зависимости от исходного значения и которое вызывается первым. – jonhopkins

+1

Это называется [взаимная рекурсия] (http://en.wikipedia.org/wiki/Mutual_recursion). – kqr

+0

И ни одна из функций на самом деле ничего не возвращает ни для базового, ни для рекурсивного случая, так как это почти бесполезно ... – twalberg

ответ

1

Этот вид рекурсии называется mutual recursion. Пример вашего кода не совсем определен, поэтому невозможно сказать, что здесь предназначено.

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

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