首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 使用遞迴函數實作數字累加

     編輯:PHP 綜合知識

遞迴函數透過自我呼叫解決問題,需有終止條件避免無限遞迴。範例實作 1+2+...+n 累加。

遞迴累加函數

<?php
function summation($n) {
    if ($n <= 0) return 0;      // 終止條件
    return $n + summation($n-1); // 遞迴步驟
}

echo "Summation(10) = " . summation(10) . "\n"; // 55
?>

執行流程圖解

summation(10)
= 10 + summation(9)
= 10 + 9 + summation(8)
...
= 10 + 9 + ... + 1 + summation(0)
= 55 + 0 = 55

遞迴 vs 迴圈

特性遞迴迴圈
程式碼簡潔度高中
記憶體使用O(n) 呼叫堆疊O(1)
效能較慢(函數呼叫開銷)快
適用場景樹狀結構、分治演算法線性疊代

尾端遞迴優化(PHP 不支援)

部分語言(Scheme、優化後的 C++)可將尾端遞迴優化為迴圈,PHP 不支援,深度遞迴會導致 Stack Overflow。

安全深度限制

function safeSum($n, $depth = 0) {
    if ($depth > 1000) throw new Exception("遞迴過深");
    if ($n <= 0) return 0;
    return $n + safeSum($n-1, $depth+1);
}

實務建議

  • 線性累加、階乘、費氏數列 優先用迴圈
  • 遞迴用於目錄遍歷、AST 處理、決策樹等天然遞迴結構
  • PHP 預設最大遞迴深度約 100-200 千層(受記憶體限制),實務建議 < 1000

理解遞迴原理與限制,選擇適當實作方式。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved