php遞歸函數return會出現無法正確返回想要值的情況


php遞歸函數中使用return的時候會碰到無法正確返回想要的值得情況,如果不明白其中的原因,很難找出錯誤的,就下面的具體例子來說明一下吧:

 

1
2
3
4
5
6
7
8
9
function  test( $i ){
     $i -=4;
     if ( $i <3){
         return  $i ;
     } else {
         test( $i );
     }
}
echo  test(30);

這段代碼看起來沒有問題,如果不運行一下估計你也不會認為他有什么問題,及時運行起來發現有問題你也不一定知道哪里有問題,但其實這個函數的else里面是有問題的。在這段代碼里面執行的結果是沒有返回值的。

所以雖然滿足條件 $i<3 時return $i整個函數還是不會返回值的。因此對上面的PHP遞歸函數可做如下修改:

1
2
3
4
5
6
7
8
9
function  test( $i ){
     $i -=4;
     if ( $i <3){
         return  $i ;
     } else {
         return  test( $i ); //增加return,讓函數返回值
     }
}
echo  test(30);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM