Recursive(http://en.wikipedia.org/wiki/Recursive)는 함수가 자신을 직접 또는 간접적으로 호출하는 메커니즘입니다. 이 강력한 아이디어는 일부 복잡한 개념을 매우 단순하게 만들 수 있습니다. 이 글에서는 주로 PHP에서 재귀의 상세한 구현 예를 소개합니다. 필요한 친구는 재귀의 정의를 참조할 수 있습니다
Recursive(http:/en.wikipedia.org/wiki/Recursive)는 함수를 호출하는 메커니즘입니다. (직간접적으로) 이 강력한 아이디어는 일부 복잡한 개념을 매우 단순한 개념으로 바꿀 수 있습니다. 컴퓨터 과학 이외의 분야, 특히 수학 분야에서는 재귀라는 개념이 일반적입니다. 예를 들어, 재귀를 설명하는데 가장 일반적으로 사용되는 피보나치 수열이 매우 전형적인 예이며, 레벨(n!)과 같은 다른 것들도 재귀적 정의(n! = n*(n-1)!)로 변환될 수 있습니다. ) .재귀 함수는 자신을 호출하는 함수입니다. 재귀 함수를 작성할 때는 무기한 재귀될 수 있으므로 주의하세요. 재귀를 종료할 적절한 수단이 있는지 확인해야 합니다.
One: 매개변수 참조를 사용하여 재귀 함수를 완성하세요. 작업은 동일한 메모리 주소입니다.
<?php
$i=1;
function test(&$i)
{
echo $i;
$i++;
if ($i < 10)
{
test($i);
}
}
test($i);// 输出123456789
test ( $i );// 输出10
?>
둘째: 전역 변수를 사용하여 재귀 함수를 완성합니다.
함수 도메인 내부의 전역 문으로 가져온 실제 전역 변수는 실제로 전역 변수에 대한 참조를 설정합니다. 예제에서 test() 함수 내의 $i는 실제로 프로그램의 첫 번째 줄에 있는 변수 $i를 적용한 것입니다($i = 1;).
<?php $i = 1 ; function test () { global $i ; echo $i ; $i++; if ($i <10 ) { test(); } } test();// 输出123456789 test ();// 输出10 ?>
Three: 정적 사용 재귀 함수를 완성하기 위한 변수.
정적의 역할: 함수가 처음 호출될 때만 변수를 초기화하고 변수 값을 유지합니다.
<?php function test () { static $i = 1 ; echo $i ; $i ++; if ( $i < 10 ) { test (); } $i --;// 在每一层递归结束时自减,这一句可以帮助理解递归函数的执行过程 } test();// 输出123456789 test();// 输出123456789 ?>
예제 1. 전역 변수 사용 시 폴더 내 모든 파일을 재귀적으로 순회
function getFiles($dir) { global $arr; if(is_dir($dir)){ $hadle = @opendir($dir); while($file=readdir($hadle) ) { if(!in_array($file,array('.', '..')) ) { $dirr = $dir.'/'.$file; if(is_dir($dirr)) { getFiles($dirr); }else{ array_push($arr, $dirr); } } } } } $arr = array(); getFiles('E:/logs'); print_r($arr);
예제 2: 정적 변수 사용 시 폴더 내 모든 파일 재귀적으로 순회
function getFiles ($dir) { static $arr = array(); if(is_dir($dir)){ $hadle = opendir($dir); while($file=readdir($hadle)) { if(!in_array($file,array('.','..')) ) { $dirr = $dir."/".$file; if(is_dir($dirr)) { getFiles ($dirr); }else{ array_push($arr,$dirr); } } } } return $arr; } $rows= array(); $rows = getFiles ('E:/logs'); print_r($rows);
관련 권장 사항:
PHP 재귀 알고리즘에 대한 자세한 설명
thinkPHP는 재귀 루프 열을 구현하고 트리 구조에 따라 무한히 출력합니다.
PHP는 비재귀 기반 선주문/순차 구현 알고리즘/이진 트리 연산의 후순 탐색
위 내용은 PHP의 재귀에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!