>  기사  >  백엔드 개발  >  PHP 재귀 함수에 대한 자세한 설명

PHP 재귀 함수에 대한 자세한 설명

小云云
小云云원래의
2018-02-26 10:07:273595검색

PHP 재귀 함수의 사용과 관련하여 PHP 재귀 함수의 몇 가지 예를 공유하세요. PHP 프로그래밍에서는 재귀 함수를 잘 사용하면 코드 효율성을 높일 수 있습니다. 예를 통해.

1. 재귀함수란 무엇인가요?

함수 본문 내에서 자신을 호출하는 함수를 재귀 호출이라고 합니다. 이런 종류의 함수를 재귀함수라고 합니다.

PHP에서 재귀 함수와 비재귀 함수의 차이점은 무엇인가요?

예제 1: 정적 변수 사용

코드 예:

function test(){
 static $dig=0;
 if($dig++<10){
  echo $dig;
  test();
 }
}
test();//12345678910

예제 2: 재귀 함수 및 루프를 사용하여 문자열 반전 정렬 달성

코드 예:

function unreverse($str){
 for($i=1;$i<=strlen($str);$i++){
  echo substr($str,-$i,1);
 }
}
unreverse("abcdefg");//gfedcbc
function reverse($str){
 if(strlen($str)>0){
  reverse(substr($str,1));
  echo substr($str,0,1);
  return;
 }
}
reverse("abcdefg");//gfedcbc

두 번째, PHP 재귀 함수 사용 예

php 재귀 사용 예 (php 재귀 함수), 역할 ID 문자열을 재귀적으로 획득, 캐스케이드 역할 정보 배열을 재귀적으로 획득, 상위 역할의 ID를 통해 하위 역할 정보 획득을 포함합니다.

예:

코드 예:

//递归获得角色ID字符串
function explodeRole($roleObj, &$resultStr){
 if(0 < count($roleObj->childRoleObjArr)){
 foreach($roleObj->childRoleObjArr as $childRoleObj){
  if('' == $resultStr){
  $resultStr .= "{$childRoleObj->id}";
  }else{
  $resultStr .= ", {$childRoleObj->id}";
  }
  explodeRole($childRoleObj, $resultStr);
 }
 }
}
//递归获取级联角色信息数组
function makeRoleRelation(&$roleObjArr){
 foreach($roleObjArr as $item){
 $item->childRoleObjArr = getRoleObjArrByParentId($item->id);
 if(0 < count($item->childRoleObjArr)){
  makeRoleRelation($item->childRoleObjArr);
 }
 }
}
//通过父角色的id获取子角色信息 
function getRoleObjArrByParentId($parentid){
 $operCOGPSTRTSysRole = new COGPSTRTSysRole();
 $operCOGPSTRTSysRole->setColumn($operCOGPSTRTSysRole->getAllColumn());
 $operCOGPSTRTSysRole->setWhere("parentroleid={$parentid}");
 $roleObjArr = $operCOGPSTRTSysRole->convResult2ObjArr($operCOGPSTRTSysRole->selectTable());
 return isset($roleObjArr)?$roleObjArr:array();
}

php 재귀 함수 사용

예 1: 정적 변수를 사용하여 재귀를 구현합니다.

코드 예:

function test(){
 static $dig=0;
 if($dig++<10){
 echo $dig;
 test();
 }
}
test();//12345678910

예 2: 재귀 함수와 루프를 사용하여 문자열 배열을 반대로 바꿉니다.

코드 예:

function unreverse($str){
for($i=1;$i<=strlen($str);$i++){
echo substr($str,-$i,1);
}
}
unreverse("abcdefg");
//gfedcbc
function reverse($str){
if(strlen($str)>0){
reverse(substr($str,1));
echo substr($str,0,1); return;
}
}
reverse("abcdefg");//gfedcbc

PHP 재귀 함수는 때때로 루프로 대체될 수 있습니다. 루프를 사용하면 이해하기 쉽고 오류가 발생할 가능성이 적기 때문에 대체할 수 없는 경우 루프를 사용하는 것이 좋습니다. PHP 재귀 함수 PHP는 재귀 함수 호출 자체를 지불합니다. 이러한 함수는 트리 및 목록과 같은 동적 데이터 구조를 탐색하는 데 특히 적합합니다. 복잡한 데이터 구조를 사용해야 하는 웹 애플리케이션은 거의 없습니다.

예:

코드 예:

reverse_r(substr($str,1)); echo substr($str,0,1); return; } ?>

이 프로그램 목록은 문자열의 내용을 역순으로 인쇄할 수 있는 두 가지 함수를 구현합니다. reversr_r 함수는 재귀를 통해 구현되고 reverse_i() 함수는 다음을 통해 구현됩니다. 루프로 구현됩니다.

관련 권장사항:

php는 재귀 함수를 통해 전체 디렉토리를 삭제합니다.

JavaScript의 재귀 함수 문제 해결

php에서 재귀 함수 호출에 대한 설명

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

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