PHP 재 귀 를 실현 하 는 세 가지 방법

재 귀 함 수 는 우리 가 자주 사용 하 는 함수 입 니 다.가장 기본 적 인 특징 은 함수 자체 가 자신 을 호출 하 는 것 입 니 다.그러나 반드시 자신 을 호출 하기 전에 조건 이 있어 야 합 니 다.그렇지 않 으 면 무한 호출 될 것 입 니 다.
일반적으로 귀속 함 수 는 전역 변수,인용,정적 변 수 를 이용 할 수 있 으 나 그들의 역할 범위 에 대해 이해 해 야 한다.재 귀 함수 도 무한 급 분 류 를 해결 하 는 좋 은 기교 이다.
1.인용 을 매개 변수 로 한다.
PHP 의 인용 은 같은 내용 을 두 변수 로 가리 킬 수 있 습 니 다.예 를 들 어$a=&$b;이것 은$a 와$b 가 같은 변 수 를 가리 키 는 것 을 의미 합 니 다.
다음 예 는$data 가 인용 전달 을 사 용 했 기 때문에 데 이 터 는 계속 누적 된다.

function recursion(&$data = [], $i = 0)
{
 if ($i < 10) {
  $data[] = $i;
  $i++;
  $this->recursion($data, $i);
 }
 return $data;
}
//   
$this->recursion(); // [0,1,2,3,4,5,6,7,8,9]
2.전역 변 수 를 이용 하여
global 은 함수 내 에서 변 수 는 외부 변수의 동명 인용 에 불과 하 다 고 밝 혔 다.변수의 작용 범 위 는 여전히 이 함수 범위 내 에 있다.이 변수의 값 을 바 꾸 면 외부 동명 변수의 값 도 자연히 바뀐다.

function recursion($data = [], $i = 0)
{
 global $data;
 if ($i < 10) {
  $data[] = $i;
  $i++;
  $this->recursion($data, $i);
 }
 return $data;
}
 
//   
$this->recursion(); // [0,1,2,3,4,5,6,7,8,9]
3.정적 변 수 를 이용 하여
정적 변 수 는 첫 번 째 호출 때 만 초기 화 됩 니 다.부분 함수 필드 에 만 존재 하지만 프로그램 이 이 역할 영역 을 떠 날 때 값 을 잃 어 버 리 지 않 습 니 다.

function recursion($i = 0)
{
 static $data = [];
 if ($i < 10) {
  $data[] = $i;
  $i++;
  $this->recursion($i);
 }
 return $data;
}
 
//   
$this->recursion(); // [0,1,2,3,4,5,6,7,8,9]
이상 은 PHP 가 재 귀 를 실현 하 는 세 가지 방법의 상세 한 내용 입 니 다.더 많은 PHP 재 귀 에 관 한 자 료 는 우리 의 다른 관련 글 을 주목 하 세 요!

좋은 웹페이지 즐겨찾기