>  기사  >  백엔드 개발  >  PHP 재귀 함수의 논리적 문제에 대한 솔루션

PHP 재귀 함수의 논리적 문제에 대한 솔루션

黄舟
黄舟원래의
2017-11-13 09:50:341367검색

이전 기사에서 php 재귀 함수의 반환 값 문제를 소개했으므로 오늘은 PHP 재귀 함수의 논리적 문제를 소개하겠습니다. 이 문제는 많은 친구들에게 발생합니다. 분석해보세요!

먼저 재귀함수가 무엇인지 알아야 합니다. 일반인의 용어로 말하면 자신만의 함수를 호출하는 것입니다.

이제 1부터 10까지의 중첩 문제를 해결하기 위한 코드를 설계해야 합니다.

코드 A:

<?php
	//递归函数
	$num=10;
	function add($sum){
		static $tot;
		if($sum>=1){
			$tot+=$sum;
			add(--$sum);
		}else{
			return $tot;
		}
	}
	echo add($num);
?>

코드 B:

<?php
	//递归函数
	$num=10;
	function add($sum){
		static $tot;
		if($sum>=1){
			$tot+=$sum;
			return add(--$sum);
		}else{
			return $tot;
		}
	}
	echo add($num);
?>

원하는 결과를 A에서는 인쇄할 수 없지만 B에서는 얻을 수 있습니다. A 코드와 B 코드의 유일한 차이점은 if에 반환을 추가한다는 것입니다.

전체 재귀 프로세스 분석을 시작해 보겠습니다. 이해를 돕기 위해 Inception을 시청해 보세요. (구현할 수 없는 A 코드를 예로 들어 보겠습니다.)

1. 함수에 10을 가져오고 if 문 뒤에는 판단하면 $tot가 겹치기 시작합니다.

2. 핵심은 다음과 같습니다. 매개변수를 1씩 줄이고 함수에 다시 도입합니다. (반환 값 없음!!!)

3. 그런 다음 위 프로세스는 $sum=1이 될 때까지 외부에서 내부로, 10에서 1까지 계속 반복합니다. 이 10단계 루프에는 반환 값이 없습니다.

4. $sum=0인 경우 반환 값이 필요합니다.

인셉션에서는 주인공이 꿈의 11층에서 깨어났는데, 그 이전 10층의 꿈은 모두 수면 단계인 것 같아요. 이 주인공이 깨어날 수 있다고 생각하시나요? 당연히 불가능합니다. 그는 꿈나라의 11층에만 갇혀서 결코 깨어나지 못할 것입니다.

주인공이 깨어날 수 있는 유일한 방법은 모든 수준의 꿈에서 깨어나 현실로 돌아가는 것입니다. A 코드와 비교하여 B 코드는 첫 번째 수준부터 11 번째 수준까지 반환 값이 필요합니다. 그래서 11번째 레이어가 깨어난 후 10번째 레이어가 활성화되고, 그 후 레이어별로 활성화되고, 마침내 원활하게 깨어나 최종 결과가 올바르게 출력되었습니다.

요약:

PHP 재귀 함수의 위 논리적 문제를 통해 많은 친구들이 겪었던 것과 같은 느낌을 받을 수 있습니다. 위의 두 코드가 문제 해결에 도움이 되기를 바랍니다.

관련 권장 사항:

PHP 재귀 함수의 반환 값 문제에 대한 해결 방법


PHP 재귀 함수를 구현하는 세 가지 방법 분석


PHP 재귀 함수 사용 예

PHP 재귀 함수를 효과적으로 사용하는 방법은 무엇인가요? PHP 재귀 함수의 일반적인 예

위 내용은 PHP 재귀 함수의 논리적 문제에 대한 솔루션의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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