php遞歸函數中使用return的時候會碰到無法正確返回想要的值得情況,如果不明白其中的原因,很難找出錯誤的,就下面的具體例子來說明一下吧:
- function test($i){
- $i-=4;
- if($i<3){
- return $i;
- }else{
- test($i);
- }
- }
- echotest(30);
這段代碼看起來沒有問題,如果不運行一下估計你也不會認為他有什么問題,及時運行起來發現有問題你也不一定知道哪里有問題,但其實這個函數的else里面是有問題的。在這段代碼里面執行的結果是沒有返回值的。所以雖然滿足條件 $i<3 時return $i整個函數還是不會返回值的。因此對上面的PHP遞歸函數可做如下修改(更多PHP教程請訪問代碼家園):
- function test($i){
- $i-=4;
- if($i<3){
- return $i;
- }else{
- return test($i);//增加return,讓函數返回值
- }
- }
- echotest(30);
新聞熱點
疑難解答