上海菠萝的一道C#递归考试题......
1. 要求如下:
请尝试修改下面的代码中Skeleton.dumpSkeletonInfo()函数,避免使用递归
internal class Bone
{
public string name;
public int[] children;
public Bone(string _name)
{
name = _name;
children = new int[4] {-1, -1, -1, -1};
}
}
internal class skeleton
{
private List<Bone> m_bones = new List<Bone>();
public void dumpSkeleonInfo()
{
dumpBoneInfo(m_bones[0]);
}
public void dumpBoneInfo(Bone bone)
{
Console.WriteLine(bone.name);
foreach (int i in bone.children)
{
if (i != -1)
{
dumpBoneInfo(m_bones[i]);
}
}
}
}
2.解答如下:如有不对,请各位指正
internal class Bone
{
public string name;
public int[] children;
public Bone(string _name)
{
name = _name;
children = new int[4] {-1, -1, -1, -1};
}
}
{
private List<Bone> m_bones = new List<Bone>();
public void dumpSkeleonInfo()
{
dumpBoneInfo(m_bones[0]);
}
public void dumpBoneInfo(Bone bone)
{
Console.WriteLine(bone.name);
foreach (var i in bone.children)
{
if (i != -1)
{
Console.WriteLine(bone.name);
}
}
}
注释:蓝色代表修改过的代码