如何递归填充二维数组?

时间:2016-03-25 14:39:27

标签: c# arrays recursion

我有一个充满9个数字的字符串。我想用数字填充3x3数组。我设法使用foreach和2 for循环来完成它,但我觉得这很麻烦。如何修改我的代码以递归方式将值输入数组?这是我目前的代码:

int[,] matrix = new int[3, 3];

if(key.Length < 9 || key.Length > 9)
{
    keyfield.GetComponent<InputField>().text = " Key Not Valid";
}
else
{        
    foreach(char c in key)
    {
        for (int k = 0; k < 3; k++)
        {
            for (int j = 0; j < 3; j++)
            {
                matrix[j, k] = c - 0;
            }
        }
    }
}

请注意,我正在使用Unity。

1 个答案:

答案 0 :(得分:2)

好吧,只需迭代char中的key并将它们分配给数组,一次一个字段。这只是计算正确的列和行的问题:

for (int i = 0; i < 9; ++i)
{
    int row = i / 3;
    int col = i % 3;
    matrix[row, col] = (int)key[i];
}

另请注意,问题中的代码和我的答案中的代码都不能以递归方式解决问题。当方法直接或间接调用自身时,会给出递归,这不是解决此特定问题所必需的。