国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

對遞歸的簡單理解

songjz / 2635人閱讀

摘要:今天一小伙伴寫了一個遞歸,可以輸出要取的值,的卻總是,寫了一個簡單的測試復原一下問題。結果如下代碼思路看上去很簡單,就遞歸,不滿足條件就返回的值。

今天一小伙伴寫了一個遞歸,echo可以輸出要取的值,return的卻總是null,寫了一個簡單的測試復原一下問題。

function test($i)
{
    $i -= 4;
    if ($i > 3) {
        echo $i;
        test($i);
    }
    echo $i;
    return $i;
}
$a=test(30);
var_dump($a);

結果如下:

261014182226
int 26

代碼思路看上去很簡單,i>3就遞歸,不滿足條件就返回i的值。問題就出在歸的過程,最后return的值將會是第一次執行這個函數時(也就是最外層)的值30-4=26。

下面是修改后的遞歸函數:

function test($i)
{
    $i -= 4;
    if ($i > 3) {
        return test($i);
    }else{
        return $i;
    }
}
$a=test(30);
var_dump($a);

結果是

int 2

當不滿足條件時,返回不滿足條件的$i,然后這個這個$i將會是遞歸回去的唯一返回值。如果還是不太明白,下面就以一層遞歸解釋其中到底發生了什么:

function test($i)
{
    $i -= 4;
    if ($i > 3) {
        return test($i);
    }else{
        return $i;
    }
}
$a=test(10);

上面的程序可以理解為:

function test(10)
{
    $i -= 4;
    if ($i > 3) {
               //先執行里面的函數,接收到下面函數的返回值2 ,最終返回2
        return 
                        function test(6)
                        {
                            $i -= 4;
                            if ($i > 3) {
                                return test($i);
                            }else{
                                //此時$i是2,這個函數返回2到上一層函數 
                                return $i;
                            }
                        }
$a=test(10);
    }else{
        return $i;
    }
}
$a=test(10);

三層四層以上就可以自己去想象了,不行就自己動手這樣替換遞歸的函數會更好理解一些。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/22198.html

相關文章

  • 數據結構與算法之精講「遞歸系列」

    摘要:終止條件遞推公式遞歸的分類通過做大量的題,根據遞歸解決不同的問題,引申出來的幾種解決和思考的方式。我們通過層與層之間的計算關系用遞推公式表達出來做計算,經過層層的遞歸,最終得到結果值。 showImg(https://segmentfault.com/img/remote/1460000019222330); 前言 幾個月之前就想寫這樣一篇文章分享給大家,由于自己有心而力不足,沒有把真...

    zhichangterry 評論0 收藏0
  • 【從蛋殼到滿天飛】JAVA 數據結構解析和算法實現-鏈表與遞歸

    摘要:鏈表與遞歸已經從底層完整實現了一個單鏈表這樣的數據結構,并且也依托鏈表這樣的數據結構實現了棧和隊列,在實現隊列的時候對鏈表進行了一些改進。計算這個區間內的所有數字之和。 showImg(https://segmentfault.com/img/remote/1460000018597053?w=1832&h=9943); 前言 【從蛋殼到滿天飛】JAVA 數據結構解析和算法實現,全部文...

    lastSeries 評論0 收藏0
  • 【從蛋殼到滿天飛】JAVA 數據結構解析和算法實現-鏈表與遞歸

    摘要:鏈表與遞歸已經從底層完整實現了一個單鏈表這樣的數據結構,并且也依托鏈表這樣的數據結構實現了棧和隊列,在實現隊列的時候對鏈表進行了一些改進。計算這個區間內的所有數字之和。 showImg(https://segmentfault.com/img/remote/1460000018597053?w=1832&h=9943); 前言 【從蛋殼到滿天飛】JAVA 數據結構解析和算法實現,全部文...

    alanoddsoff 評論0 收藏0
  • 從“數學歸納法”到理解遞歸算法”!

    摘要:前言相信大家在面試或者工作中偶爾會遇到遞歸算法的提問或者編程,我們今天來聊一聊從數學歸納法到理解遞歸算法。這種廣義的數學歸納法應用于數學邏輯和計算機科學領域,稱作結構歸納法。 showImg(https://img-blog.csdnimg.cn/20190426221838971.gif);showImg(https://img-blog.csdnimg.cn/20190429222...

    oogh 評論0 收藏0
  • 遞歸就這么簡單

    摘要:那么,有了循環,為什么還要用遞歸呢在某些情況下費波納切數列,漢諾塔,使用遞歸會比循環簡單很多很多話說多了也無益,讓我們來感受一下遞歸吧。 遞歸介紹 本來預算此章節是繼續寫快速排序的,然而編寫快速排序往往是遞歸來寫的,并且遞歸可能不是那么好理解,于是就有了這篇文章。 在上面提到了遞歸這么一個詞,遞歸在程序語言中簡單的理解是:方法自己調用自己 遞歸其實和循環是非常像的,循環都可以改寫成遞歸...

    dreamtecher 評論0 收藏0

發表評論

0條評論

songjz

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<