Я не могу понять, где мы используем эту структуру для рекурсии в задаче и что это называетсяПрименение такого рода рекурсии
int func001(int x){
if(x>=1) func003(x-1);
}
int func003(int y){
if(y>=2) func001(y-1);
}
Я не могу понять, где мы используем эту структуру для рекурсии в задаче и что это называетсяПрименение такого рода рекурсии
int func001(int x){
if(x>=1) func003(x-1);
}
int func003(int y){
if(y>=2) func001(y-1);
}
Этот вид рекурсии называется mutual recursion. Пример вашего кода не совсем определен, поэтому невозможно сказать, что здесь предназначено.
Тем не менее, наиболее частое использование взаимных рекурсивных функций заключается в кодировании конечного автомата: каждое состояние представлено функцией, а переходы представлены вызовами других функций. Это, например, случай в лексических анализаторах, генерируемых lex
и аналогичных программах, но также часто в рукописных лексических анализаторах.
Где вы видите этот код? Какая проблема заключается в ее решении в исходном источнике? Как бы то ни было, этот код на самом деле мало что делает. Он просто продолжает называть эти две функции вперед и назад с меньшими и меньшими значениями 'x' /' y', пока не достигнет 1 или 0, в зависимости от исходного значения и которое вызывается первым. – jonhopkins
Это называется [взаимная рекурсия] (http://en.wikipedia.org/wiki/Mutual_recursion). – kqr
И ни одна из функций на самом деле ничего не возвращает ни для базового, ни для рекурсивного случая, так как это почти бесполезно ... – twalberg