我遇到了一个问题,递归和循环都似乎是自然的解决方案。在这种情况下,是否有约定俗成或“首选方法”?(显然下面的示例并不完全简单)
递归
Item Search(string desired, Scope scope) {
foreach(Item item in scope.items)
if(item.name == desired)
return item;
return scope.Parent ? Search(desired, scope.Parent) : null;
}
循环
Item Search(string desired, Scope scope) {
for(Scope cur = scope; cur != null; cur = cur.Parent)
foreach(Item item in cur.items)
if(item.name == desired)
return item;
return null;
}