이 기사는 주로 참조 가치가 있는 PHP의 재귀 분석을 소개합니다. 이제 도움이 필요한 친구들이 참고할 수 있습니다.
재귀란 무엇인가요?
인기 있는 예를 들어보세요.
무게가 8온스인 사과를 같은 무게의 여러 부분으로 잘라야 하며 각 부분의 무게는 1온스를 초과할 수 없습니다. 당신은 분명히 이렇게 생각할 것입니다:
1.먼저 사과를 같은 무게의 A1과 A2 두 부분으로 자릅니다.
2. 그 중 하나를 자릅니다. A11과 A12 두 부분을 동일하게 나누고, A2를 A21과 A22 두 부분으로 동일하게 자릅니다.
3.A11을 두 부분으로 동일하게 자릅니다...
4.각 작은 부분까지; 1Tael보다 작거나 같습니다.
위의 예는 큰 것을 여러 개의 작은 것으로 바꾸는 재귀 모델입니다. 방법은 매번 동일합니다.
program자체가 자신을 호출하는 프로그래밍 기법을 recursion(recursion)이라고 합니다. 재귀에는 직접 재귀와 간접 재귀가 포함됩니다.
•직접 재귀: 함수가 실행 중에 자신을 호출합니다.
•간접 재귀: 함수는 실행 중에 다른 함수를 호출한 다음 이러한 함수를 통해 자신을 호출합니다.
재귀에는 네 가지 특성이 있습니다.
1.최종적으로 도달할 수 있는 종료 조건이 있어야 합니다. 그렇지 않으면 프로그램이 무한 루프에 빠지게 됩니다. .하위 문제는 원래 문제보다 크기가 작거나 종료 조건에 더 가깝습니다.
3.하위 문제는 종료 조건이 다음과 같기 때문에 다른 재귀 호출로 해결되거나 직접 해결될 수 있습니다.
4. 하위 문제에 대한 해결책은 전체 문제에 대한 해결책으로 결합될 수 있어야 합니다.
위의 예는 위의 네 가지 속성도 만족합니다:
(1).종료 조건은 각 부분의 무게가 1
two;보다 클 수 없다는 것입니다.각 컷의 크기가 지난번보다 작습니다. (3).각 컷의 방법이 동일하므로 하위 문제를 재귀적으로 호출할 수 있습니다. (4). 컷은 마침내 그 부분이 필요한 솔루션입니다.
function cutApple($w,$t){ if($w<1){ echo "已经切完了"; } else{ echo "第".$t."次切割,每份重量是:".($w/2)."<br>"; $t+=1; cutApple($w/2,$t); } }
첫 번째 자르기, 각 부분의 무게: 7.5
두 번째 자르기, 각 부분의 무게: 3. 75 세 번째 자르기, 각 부분의 무게: 1.875
네 번째 자르기, 각 부분의 무게: 0.9375
잘랐습니다
또 다른 인기 예: 등차수열의 합을 구해 보세요: 1+2+3+4+...+98+100;/**
* 等差数列求和
* @param [int] $n [第一个数]
* @param [int] $m [第二个数]
*/
function add($n,$m){
if(!is_int($n)||!is_int($m))
return false;
static $sum=0;
$sum+=$n;
$n++;
if($n>$m) return $sum;
return add($n,$m);
}
echo add(1,100);
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
위 내용은 PHP의 재귀 분석 정보의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!