我的笨方法如下:
void StupidMethod(List<T> list0, int init = 0)
{
for (int i = 0; i < list0.Count; i++)
{
List<T> list1 = GetChildList(list0);
myIntArrayList.Add(new int[] { init });
for (int j = 0; j < list1.Count; j++)
{
List<T> list2 = GetChildList(list1);
myIntArrayList.Add(new int[] { init, i });
for (...)
{
...
}
}
}
}
我想把它简化成这样:
void RecursiveMethod(List<T> list0, int init = 0)
{
for (int i = 0; i < list0.Count; i++)
{
List<T> list1 = GetChildList(list0);
myIntArrayList.Add(new int[] { init });
RecursiveMethod(list1, i);
}
}
但是我不知道如何科普int数组部分:myIntArrayList.Add(new int[] { init });
数组的长度受“递归级别?”的影响,但我不知道如何获得“级别”。并且添加到myIntArrayList的数据是“stagger”。不知道你是否理解.....有人能理解并能帮助我吗?或者给予我一些关于“递归级别”的可能的提示或关键字,以便我在网上搜索。谢谢!
如果实现了这一点,它将变得非常整洁。我试图添加一个全局字段“计数器”,但没有找到一个合适的位置。每次运行该方法都会增加计数器。
2条答案
按热度按时间rkue9o1l1#
您可以修改RecursiveMethod以包含递归级别和当前路径作为参数。
vdgimpew2#
不知道你想达到什么目的,但这个“伪”对你有用吗?
请记住,这个方法没有办法退出,所以需要类似“如果它是最后一个孩子,返回所有信息”的东西,以及一种跟踪arrayList是否不为null的方法