如何在C#中使用递归创建多维变量对象列表?

如何在C#中使用递归创建多维变量对象列表?,c#,list,object,recursion,multidimensional-array,C#,List,Object,Recursion,Multidimensional Array,我试图在C#中生成一个多维的可能动作序列,对象可能在一个回合中执行,对象数量可变,对象可用的动作数量可变 每个物体每转一圈都应该做一个动作 例如:-其中对象是字母,它可以执行的操作是数字: 可能的对象/动作:a1、a2、a3、b1、c1 我有一个以对象为属性的操作列表 我希望多维列表如下所示: a1、b1、c1 a2、b1、c1 a3、b1、c1 b1、a1、c1 b1、a2、c1 b1、a3、c1 c1、a1、b1 当我开始编写函数以返回多维操作列表时,我意识到我是多么的深不可测,所以我

我试图在C#中生成一个多维的可能动作序列,对象可能在一个回合中执行,对象数量可变,对象可用的动作数量可变

每个物体每转一圈都应该做一个动作

例如:-其中对象是字母,它可以执行的操作是数字:

可能的对象/动作:a1、a2、a3、b1、c1


我有一个以对象为属性的操作列表

我希望多维列表如下所示:

  • a1、b1、c1
  • a2、b1、c1
  • a3、b1、c1
  • b1、a1、c1
  • b1、a2、c1
  • b1、a3、c1
  • c1、a1、b1
当我开始编写函数以返回多维操作列表时,我意识到我是多么的深不可测,所以我来到这里

我当前的代码:

private List<List<Move>> PotentialLine(List<Move> moves, List<Move> currentList = null, List<List<Move>> finalList = null)
{
    if(finalList == null)
        finalList = new List<List<Move>>();
    if(currentList == null)
        currentList = new List<Move>();

    //find all combinations of move for this level
    foreach(Move move in moves.ToList())
    {
        currentList.Add(move);

        List<Move> movesRemaining = moves;
        movesRemaining.RemoveAll(o=> o.card == move.card);

        if(!movesRemaining.Any())
        {
            finalList.Add(currentList);
            return finalList;
        }
        else
        {
            finalList = PotentialLine(movesRemaining, currentList, finalList);   
        }
    }
    return finalList;
}
private List PotentialLine(列表移动,列表当前列表=null,列表最终列表=null)
{
if(finalList==null)
finalList=新列表();
如果(currentList==null)
currentList=新列表();
//查找此级别的所有移动组合
foreach(在moves.ToList()中移动)
{
currentList.Add(move);
列表移动维护=移动;
movesRemaining.RemoveAll(o=>o.card==move.card);
如果(!movesRemaining.Any())
{
finalList.Add(当前列表);
回归终结者;
}
其他的
{
finalList=潜在行(movesRemaining、currentList、finalList);
}
}
回归终结者;
}

欢迎来到SO!即使你的代码不够好,也许你仍然可以分享它。还要补充:根据什么规则决定哪些对象/操作组合是可能的?请发布一些伪代码,包括输入和预期输出,以便更容易理解您的问题“我有一个以对象为属性的操作列表”-这听起来像是模拟此问题的正确方法吗?当然,一个对象有一个可能的操作列表是合乎逻辑的,而不是一个操作有一个可以完成它的对象列表。你说你想要一个可能操作的多维序列。为什么是多维的?您不只是想要一个可以应用于对象的操作列表吗?如何确定行动?这些物体来自哪里?对象是什么类型的?它们是否共享一个公共接口或基类?你说的“转身”是什么意思?你是指循环中的迭代吗?这是游戏吗?请添加一些实际的(最小的)类,这些类代表您正在谈论的内容,以及对实际场景的描述。你的问题太抽象和不清楚了,任何人都无法提供一个像样的答案。编辑后的代码包含了我到目前为止的代码