好吧,递归对我来说总是很麻烦。
谁能解释一下递归在计算给定字符串排列的函数中是如何工作的。
void permute(char *a, int i, int n)
{
int j;
if (i == n)
printf("%s\n", a);
else
{
for (j = i; j <= n; j++)
{
swap((a+i), (a+j));
permute(a, i+1, n);
swap((a+i), (a+j)); //backtrack
}
}
}
当有 2 个递归调用后跟一个语句时,递归如何工作?我希望我很清楚。
谢谢。