Давайте пройдемся по нему вместе.
Когда в первый раз вызывается rech:
Первый раз, когда мы вызываем rech: rech(tab = {1,2,3,4,5}, n = 5, i = 0, r = 2)
is i < n
или 0 < 5
?Это правда.Теперь мы проверяем, если tab[i] == r
или 1 == 2
.Это неверноМы увеличиваем i и начинаем заново
Второй раз, когда мы называем rech: rech(tab = {1,2,3,4,5}, n = 5, i = 1, r = 2)
is tab[i] < r
или 1 < 5
?Это правда.Теперь мы проверяем, если tab[i] == r
или 2 == 2
.Это правда.Мы возвращаем 1 назад в первый раз, когда вызывается rech.
Назад в первый раз, когда мы вызываем rech: rech(tab, n, i, r)
возвращено 1. Итак, в терминах кодирования это будет выглядеть как 1;
, который ничего не делает.
Теперь мы закончили с оператором if и вернули 0 в main.
main теперь выводит 0 и программа завершается.
Это процесс отладки кода.
Чтобы программа вернула 1 обратно в main, вместо этого вы захотите, чтобы она возвращала функцию rech, потому что в противном случае рекурсивный вызов ничего не делает.