Только начал изучать рекурсию и не совсем понимаю как она работает, но я чисто для себя вывел типа, "Что такое рекурсия?":
Данное ниже было выведено под "впечатлением" вот этого кода:
// factor2.cpp
// подсчет факториала числа с помощью рекурсии
#include <iostream>
using namespace std;
unsigned long factfunc(unsigned long); // прототип
int main()
{
int n; // число, вводимое пользователем
unsigned long fact; // факториал этого числа
cout << "Введите целое число :";
cin >> n;
fact = factfunc(n);
cout << "Факториал числа " << n << " равен " << fact << endl;
return 0;
}
//--------------------------------------------------------
// функция factfunc()
// рекурсивно подсчитывает факториал числа
unsigned long factfunc(unsigned long n)
{
if(n > 1)
return n * factfunc(n-1); // вызов самой себя
else
return 1;
}
рекурсию более сложного вида, просто не могу понять.
Представим что у нас есть туннель и машина, и мы хотим узнать длину тоннеля, будим двигаться по туннелю пока не упрёмся в стену (т.е пока условие верно).
На протяжении всего пути, через каждый километр, будим выкидывать что-нибудь (без разницы что, например красный футбольный мяч).
Итак мы упёрлись в стену (т.е условия неверно), быстренько разворачиваемся, и едем обратно, подбирая по пути мячики (один мяч +1 километр), итак пока не выйдем из туннеля.
Ещё раз скажу, что я это вывел чисто для себя, т.к не очень понимаю как работает рекурсия.
Это нормальное трактование рекурсии, или это бред сивой кобылы?