假定有段这样的代码:
void recursion(int *a,int i,int j)//递归
{
if (i > N – 2)
{
return;
}
else if (j < N – 1 – i)
{
if (a[j] > a[j + 1])
{
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
recursion(a, i, j + 1);
recursion(a, i + 1, j);
}
}
谁能解释下 这双递归执行的过程? 是先执行 recursion(a, i, j + 1); 执行完成 当j>N-1-i时 在执行 recursion(a, i + 1, j); 还是 recursion(a, i, j + 1);执行一次 然后在执行 recursion(a, i + 1, j);
void recursion(int *a,int i,int j)//递归
{
if (i > N – 2)
{
return;
}
else if (j < N – 1 – i)
{
if (a[j] > a[j + 1])
{
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
recursion(a, i, j + 1);
recursion(a, i + 1, j);
}
}
谁能解释下 这双递归执行的过程? 是先执行 recursion(a, i, j + 1); 执行完成 当j>N-1-i时 在执行 recursion(a, i + 1, j); 还是 recursion(a, i, j + 1);执行一次 然后在执行 recursion(a, i + 1, j);
解决方案
40
本人单步跟踪程序运行比谁给你解释都好