首頁 後端開發 php教程 php递归函数return会出现无法正确返回想要值的情况

php递归函数return会出现无法正确返回想要值的情况

Mar 15, 2017 pm 03:42 PM
遞迴函數

php递归函数中使用return的时候会碰到无法正确返回想要的值得情况,如果不明白其中的原因,很难找出错误的,就下面的具体例子来说明一下吧:

function test($i){
    $i-=4;
    if($i<3){
        return $i;
    }else{
        test($i);
    }
}
echo test(30);
登入後複製

这段代码看起来没有问题,如果不运行一下估计你也不会认为他有什么问题,及时运行起来发现有问题你也不一定知道哪里有问题,但其实这个函数的else里面是有问题的。在这段代码里面执行的结果是没有返回值的。

所以虽然满足条件 $i<3 时return $i整个函数还是不会返回值的。因此对上面的PHP递归函数可做如下修改:

function test($i){
    $i-=4;
    if($i<3){
        return $i;
    }else{
        return test($i);//增加return,让函数返回值
    }
}
echo test(30);
登入後複製

相关文章
php递归函数怎么用才有效?php递归函数典型例子
php递归函数 PHP中Array相关函数简介
浅析PHP递归函数返回值的使用

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

C++ 遞迴函數的最佳化技巧有哪些? C++ 遞迴函數的最佳化技巧有哪些? Apr 17, 2024 pm 12:24 PM

為了優化遞歸函數的效能,可以採用以下技巧:使用尾遞歸:將遞歸呼叫放在函數末尾,避免遞歸開銷。備忘錄化:儲存已計算的結果,避免重複計算。分治法:分解問題,遞歸解決子問題,提高效率。

如何解決Python的程式碼中的函數嵌套過多錯誤? 如何解決Python的程式碼中的函數嵌套過多錯誤? Jun 25, 2023 pm 12:35 PM

Python是一門非常強大的程式語言,許多程式設計師都選擇Python作為主要的程式語言。但是,程式碼中過多的函數嵌套會導致程式難以維護和理解。本文將探討如何解決Python的程式碼中的函數嵌套過多錯誤。函數巢狀淺談函數巢狀是指在一個函數的主體中定義另外一個函數的過程。函數巢狀可以使程式的結構更加清晰,程式碼也更易於閱讀和維護。但是,函數巢狀過多會導致程式碼結構過於複雜

C++ 遞迴函式在搜尋演算法中的應用? C++ 遞迴函式在搜尋演算法中的應用? Apr 17, 2024 pm 04:30 PM

遞歸函數在搜尋演算法中用於探索樹狀資料結構。深度優先搜尋使用堆疊探索節點,而廣度優先搜尋使用佇列按層遍歷。在實際應用中,如查找檔案中,遞歸函數可用於在指定目錄中搜尋給定檔案。

C++ 遞迴函數的退出條件是什麼? C++ 遞迴函數的退出條件是什麼? Apr 17, 2024 am 11:33 AM

C++遞迴函數的退出條件包括:基線條件:檢查函數是否達到可直接傳回結果的狀態,通常判斷某個條件或參數值是否符合閾值。遞歸終止條件:替代或補充基線條件,確保函數在一定數量的遞歸呼叫後停止,透過追蹤遞歸深度或設定最大遞歸深度限制實現。

C++ 遞歸函數在排序演算法中的應用? C++ 遞歸函數在排序演算法中的應用? Apr 17, 2024 am 11:06 AM

C++中遞歸函數在排序演算法中的應用透過遞歸函數實現的插入排序和歸併排序演算法,可以將複雜的問題分解為更小的子問題,並透過遞歸呼叫高效地解決。插入排序:透過逐一插入元素,將陣列有序化。歸併排序:分而治之,將數組拆分並遞歸排序子數組,最後將排序後的子數組合併。

C++ 遞歸函數的尾遞歸最佳化策略如何實現? C++ 遞歸函數的尾遞歸最佳化策略如何實現? Apr 17, 2024 pm 02:42 PM

尾遞歸最佳化策略透過將尾遞歸呼叫轉換為循環,有效減少函數呼叫堆疊深度,防止堆疊溢位。最佳化策略包括:偵測尾遞歸:檢查函數中是否存在尾遞歸呼叫。將函數轉換為循環:使用循環來代替尾遞歸調用,並維護堆疊保存中間狀態。

如何使用Go語言遞歸函數實現階乘? 如何使用Go語言遞歸函數實現階乘? Jul 31, 2023 pm 08:31 PM

如何使用Go語言遞歸函數實現階乘?階乘是數學中常見的一種計算方式,它將一個非負整數n乘以比它小的所有正整數,直到1。例如,5的階乘可以表示為5!,計算方式為54321=120。在計算機程式設計中,我們經常使用遞歸函數來實現階乘的計算。首先,我們需要了解遞歸函數的概念。遞歸函數是指在函數的定義中呼叫函數本身的過程。在解決問題時,遞歸函數會不斷地

列出目錄中的所有檔案和子目錄的C程序 列出目錄中的所有檔案和子目錄的C程序 Aug 25, 2023 pm 10:09 PM

在這裡,我們得到了一個目錄。我們的任務是建立一個C程式來列出目錄中的所有檔案和子目錄。目錄是一個地方/區域/位置,其中一組檔案(s)將被儲存。子目錄是根目錄中的一個目錄,反過來,它可以有另一個子目錄。在C程式語言可以輕鬆列出目錄中的所有檔案和子目錄。下面的程式將說明如何列出目錄中的所有檔案和子目錄。 //列出目錄中所有檔案和子目錄的C程式範例 現場示範#include<stdio.h>#include<dirent.h>intmain(void){ &am

See all articles