>  기사  >  백엔드 개발  >  PHP의 재귀 분석 정보

PHP의 재귀 분석 정보

不言
不言원래의
2018-06-11 11:36:231689검색

이 기사는 주로 참조 가치가 있는 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의 재귀 분석 정보의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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