Я нахожу рекурсию, кроме очень прямых, таких как факториал, очень трудно понять. Следующий фрагмент печатает все перестановки строки. Может ли кто-нибудь помочь мне понять это. Каким образом можно правильно понять рекурсию.
void permute(char a[], int i, int n)
{
int j;
if (i == n)
cout << a << endl;
else
{
for (j = i; j <= n; j++)
{
swap(a[i], a[j]);
permute(a, i+1, n);
swap(a[i], a[j]);
}
}
}
int main()
{
char a[] = "ABCD";
permute(a, 0, 3);
getchar();
return 0;
}