本帖最后由 飞、 于 2013-10-18 23:14 编辑
请看如下代码:
public static void permutation(char[] a, int m, int n)
{
int i;
char t;
if (m < n - 1)
{
permutation(a, m + 1, n);
for (i = m + 1; i < n; i++)
{
t = a[m];
a[m] = a;
a = t;
permutation(a, m + 1, n);
t = a[m];
a[m] = a;
a = t;
}
}
else
{
printResult(a);
}
}
public static void printResult(char[] text)
{
for (int i = 0; i < text.Length; i++)
{
Console.Write(" {0}",text);
}
Console.WriteLine();
}
让我难堪的是: 如果上面的代码执行到 if 判断 值为false,就会跳转到else 执行,就会调用printResult()方法,当printResult()方法执行完成后,就会执行到permutation()方法的结尾处,我的理解是:应该是要结束permutation()方法的,但是这时程序却跳到if 判断的下面一个permutation()那里去执行了for()循环,实在搞不懂,求大神解释 |