一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。
比如要获取QList变量,如果采用返回值形式,会有如下写法
QList<int> Node::getNumList()
{
QList<int> list1;
if(当前节点有子节点)
{
for(遍历当前节点的下一级元素)
{
//1.获取子节点item
//2.调用子节点的getNumList方法
list1.append(item->getNumList());
}
}
else
{
list1.append(叶节点对应id);
}
return list1;
}
存在问题:需要多处进行append操作,还出现了跳转漂移问题.