繁体   English   中英

为什么这个递归方法返回 400 而不是 404?

[英]Why does this recursive method return 400 instead of 404?

为什么该方法返回 400? 值“x”来自 5、15、45、135、405、404、403、402、401、400。我不知道为什么。 请解释。

public int go(int x) {
    if(x < 300)
        x = go(x * 3);
    return x - 1;
}

它会返回不同的值,这取决于你最初用什么来调用它。 如果您最初用 5 调用它,它将返回 400,因为一旦达到 135,您将深入递归函数的 4 层。

所以它确实返回 404 - 给调用者,调用者返回 403,调用者返回 402...直到它达到 400,此时它位于第一个调用者,这是您正在打印的值。

这就是递归函数的工作原理。

如果不清楚,请尝试打印go(go(go(go(go(405)))))结果,因为当递归完成时,这就是示例中有效的结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM