所以我有一個globar數組和一個遞歸函數。例如,遞歸函數本身執行16次,並且只應該到達bestOrder=array2D
行兩次。程序實際上只到達它兩次,但是bestDrder每次在此行中更改array2D時都會更改它的值(array2D[position] = i;
)。 BestOrder應包含2 0 3 1個訂單,但在功能的末尾包含3 2 1 0(數組2D的最後一個值)。我該如何解決這個問題?全局數組遞歸函數問題
private static int[] bestOrder;
private static void Permutate(int[] array2D, int position, Point[] checkpoints)
{
if (position == array2D.Length)
{
if (GetPathLen(checkpoints, array2D) < min)
{
min = GetPathLen(checkpoints, array2D);
bestOrder= array2D;
}
return;
}
for (int i = 0; i < array2D.Length; i++)
{
bool found = false;
for (int j = 0; j < position; j++)
if (array2D[j] == i)
{
found = true;
break;
}
if (found) continue;
array2D[position] = i;
Permutate(array2D, position + 1, checkpoints);
}
}
閱讀有關參考/值類型,你會明白:) – MajkeloDev
我沒有,但它並沒有很幫助我在這種情況下 –