>  기사  >  백엔드 개발  >  PHP의 재귀 작동 메커니즘과 예에 대한 자세한 설명

PHP의 재귀 작동 메커니즘과 예에 대한 자세한 설명

韦小宝
韦小宝원래의
2018-02-05 10:15:391598검색

PHP 재귀는 함수가 자신을 직접 또는 간접적으로 호출하는 메커니즘입니다. 이 강력한 아이디어는 일부 복잡한 개념을 매우 간단하게 만들 수 있습니다. 이 글은 주로 PHP에서 재귀의 상세한 구현 예를 소개합니다. PHP 재귀에 대해 잘 모르는 친구는 이 글을 참고하세요

재귀의 정의

재귀는 자신을 (직접 또는 간접적으로) 호출하는 함수입니다. ) ) 이 강력한 아이디어는 일부 복잡한 개념을 매우 간단하게 만들 수 있습니다. 컴퓨터 과학 이외의 분야, 특히 수학 분야에서는 재귀라는 개념이 일반적입니다. 예를 들어, 재귀를 설명하는데 가장 일반적으로 사용되는 피보나치 수열이 매우 전형적인 예이며, 레벨(n!)과 같은 다른 것들도 재귀적 정의(n! = n*(n-1)!)로 변환될 수 있습니다. ) .실생활에서도 반복적인 사고는 어디에서나 볼 수 있습니다. 예를 들어 학업 문제로 인해 교장 인감이 필요하지만 교장은 "학생 학장이 가지고 있어야만 도장을 찍겠습니다"라고 말합니다. 학장 선생님을 찾아주세요 원장님도 "학과장 도장 찍혀야 도장 찍겠습니다"라고 하더군요... 드디어 교장 선생님을 찾을 때까지, 그리고 교장 선생님께 넉넉한 도장을 받은 후 , 학과장, 학장, 교장에게 돌아가야 합니다. Stamp, 프로세스는 다음과 같습니다.

재귀 함수는 자신을 호출하는 함수입니다. 재귀 함수를 작성할 때는 무기한 재귀될 수 있으므로 주의하세요. 재귀를 종료할 적절한 수단이 있는지 확인해야 합니다.

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(&#39;.&#39;, &#39;..&#39;)) )
{
$dirr = $dir.&#39;/&#39;.$file;
if(is_dir($dirr))
{
getFiles($dirr);
}else{
array_push($arr, $dirr);
}
}
}
}
}
$arr = array();
getFiles(&#39;E:/logs&#39;);
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(&#39;.&#39;,&#39;..&#39;)) )
{
$dirr = $dir."/".$file;
if(is_dir($dirr))
{
getFiles ($dirr);
}else{
array_push($arr,$dirr);
}
}
}
}
return $arr;
}
$rows= array();
$rows = getFiles (&#39;E:/logs&#39;);
print_r($rows);

요약 위 내용은 자세한 내용입니다. 편집자가 소개한 PHP의 재귀 구현 예에 대한 설명이 도움이 되기를 바랍니다. !

추천 글:

PHP 재귀 알고리즘 단순화

재귀 함수는 자체 호출 함수이거나 함수 본문에서 직접 호출되지만 자체 호출을 위한 조건은 다음과 같습니다. 조건을 만족하면 함수 자체를 호출합니다...

php를 재귀 없이 무한 분류 트리를 구현합니다.

php를 재귀 없이 무한 분류 트리를 구현하는 방법은 무엇입니까? 이번 글에서는 트리의 선주문 순회를 통해 재귀 없는 무한 분류를 달성하는 PHP를 주로 소개합니다...

위 내용은 PHP의 재귀 작동 메커니즘과 예에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.