C# 递归方法,仅从上次递归调用返回值
我有一个递归方法,它处理从流中检索的项。但是,我希望该方法仅在没有其他项目要处理时返回stream.NextPosition。但是,由于这是一种递归方法,编译器会抱怨并非所有代码路径都返回值。这是有意义的,因为递归调用不会返回任何内容。我如何处理这个问题,我只关心最后一次调用的返回值C# 递归方法,仅从上次递归调用返回值,c#,.net,algorithm,recursion,C#,.net,Algorithm,Recursion,我有一个递归方法,它处理从流中检索的项。但是,我希望该方法仅在没有其他项目要处理时返回stream.NextPosition。但是,由于这是一种递归方法,编译器会抱怨并非所有代码路径都返回值。这是有意义的,因为递归调用不会返回任何内容。我如何处理这个问题,我只关心最后一次调用的返回值 public void Process() { int position = ProcessStream(0) } //recursive method public string ProcessSt
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)
}
您必须在函数末尾返回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)
}
您必须在函数末尾返回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)
}
所以将if语句移到底部?不,在最后一行添加一个
return
。@Prabhu不,您可以保持一切原样,只需将return
关键字放在递归调用之前。@hatchet是一个输入错误。修正了。哦,好吧,我误解了。因此,只需在末尾的ProcessStream调用前面添加return语句……将if语句移到底部?不,在最后一行添加一个return
。@Prabhu不,您可以保持一切原样,只需将return
关键字放在递归调用前面。@hatchet是一个打字错误。修正了。哦,好吧,我误解了。所以只需在末尾的ProcessStream调用前面添加return语句。。。