匿名遞歸函數是一種遞歸函數類型,其中函數不是通過名稱顯式調用另一個函數。這可以通過使用高階函數傳入函數作為參數,並調用該函數來完成。這也可以通過反射函數來隱式完成此操作,反射允許根據當前上下文(尤其是當前函數)訪問某些函數。
在計算機科學理論中,匿名遞歸意義重大,因為匿名遞歸是一種遞歸類型,在這種類型中,人們可以實現遞歸而無需命名函數。
使用匿名遞歸:
- 匿名遞歸主要用於允許匿名函數遞歸。
- 特別是當它們形成閉包或用作回調時,避免綁定函數名稱。
備擇方案:
- 使用命名遞歸和命名函數。
- 如果給出了匿名函數,則可以通過將名稱綁定到函數來完成匿名遞歸,如命名函數一樣。
示例1:
<?php
// PHP program to illustrate the
// Anonymous recursive function
$func = function ($limit = NULL) use (&$func) {
static $current = 10;
// if condition to check value of $current.
if ($current <= 0) {
//break the recursion
return FALSE;
}
// Print value of $current.
echo "$current\n";
$current--;
$func();
};
// Function call
$func();
?>
輸出:
10 9 8 7 6 5 4 3 2 1
示例2:
<?php
// PHP program to illustrate the
// Anonymous recursive function
$factorial = function( $num ) use ( &$factorial ) {
// Base condition of recursion
if( $num == 1 )
return 1;
// return statement when $m is not equals to 1.
return $factorial( $num - 1 ) * $num;
};
// Function call
print $factorial( 6 );
?>
輸出:
720
相關用法
- PHP Ds\Map put()用法及代碼示例
- PHP Ds\Map sum()用法及代碼示例
- PHP Ds\Map xor()用法及代碼示例
- p5.js hue()用法及代碼示例
- PHP Ds\Map last()用法及代碼示例
- CSS rgb()用法及代碼示例
- PHP Ds\Set last()用法及代碼示例
- PHP each()用法及代碼示例
- PHP Ds\Set first()用法及代碼示例
- PHP Ds\Map get()用法及代碼示例
注:本文由純淨天空篩選整理自Amaninder.Singh大神的英文原創作品 Anonymous recursive function in PHP。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。