gpt4 book ai didi

c# - 递归方法仅从最后一次递归调用返回值

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:34:29 24 4
gpt4 key购买 nike

我有一个递归方法来处理从流中检索到的项目。但是,我希望该方法仅在没有更多项目要处理时才返回 stream.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)
}

最佳答案

您必须在函数结束时返回 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)
}

关于c# - 递归方法仅从最后一次递归调用返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24832413/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com