簡體   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