成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

對遞歸的簡單理解

songjz / 2636人閱讀

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

今天一小伙伴寫了一個遞歸,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);

結(jié)果如下:

261014182226
int 26

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

下面是修改后的遞歸函數(shù):

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

結(jié)果是

int 2

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

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

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

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/22198.html

相關文章

  • 數(shù)據(jù)結(jié)構(gòu)與算法之精講「遞歸系列」

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

    zhichangterry 評論0 收藏0
  • 【從蛋殼到滿天飛】JAVA 數(shù)據(jù)結(jié)構(gòu)解析和算法實現(xiàn)-鏈表與遞歸

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

    lastSeries 評論0 收藏0
  • 【從蛋殼到滿天飛】JAVA 數(shù)據(jù)結(jié)構(gòu)解析和算法實現(xiàn)-鏈表與遞歸

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

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

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

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

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

    dreamtecher 評論0 收藏0

發(fā)表評論

0條評論

songjz

|高級講師

TA的文章

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