ну вот самая банальная рекурсия
int Lol(int num)
{
if(num < 1)
return 0;
else
return Lol(num-1) + num;
}
тоже самое было бы с обьектами
object * LoadObject(stream in,object * parent = NULL)
{
object * currentobject = new object;
currentobject->setparent(parent);
currentobject->load(in);
for( ... all childs of current object ... )
LoadObject(in,currentobject);
return currentobject;
}