只从上次递归调用返回值的递归方法
本文关键字:返回值 递归方法 调用 递归 | 更新日期: 2023-09-27 18:13:29
我有一个递归方法,它处理从流中检索到的项。但是,我希望该方法返回流。NextPosition仅在没有更多项目要处理时使用。然而,由于这是一个递归方法,编译器抱怨并非所有代码路径都返回值。这是有意义的,因为递归调用没有返回任何东西。我只对上次调用的返回值感兴趣,如何处理这个问题呢?
public void Process()
{
int position = ProcessStream(0)
}
//recursive method
public string ProcessStream(int streamPosition)
{
var stream = GetStream(streamPosition);
if (stream.Items.count == 0)
return stream.NextPosition;
foreach(var item in stream.Items)
{
ProcessItem(item);
}
ProcessStream(stream.NextPosition)
}
必须在函数结束时使用return ProcessStream(stream.NextPosition)
。
public string ProcessStream(int streamPosition)
{
var stream = GetStream(streamPosition);
if (stream.Items.count == 0)
return stream.NextPosition;
foreach(var item in stream.Items) {
ProcessItem(item);
}
return ProcessStream(stream.NextPosition)
}