Pages Menu
TwitterRssFacebook
Categories Menu

Posted by on Ago 2, 2019

php 재귀함수 예제

재귀는 많은 숙련 된 프로그래머조차도 사용하지 않고 몇 년을 갈 수 있으며 많은 다른 사람들은 진정으로 강력한 개념이기 때문에 슬픈 것을 들어 본 적이 없습니다. 이 기사를 통해 저기 나가서 자신의 재귀 함수를 작성하기에 충분한 지식을 주었을 수 있기를 바랍니다. 그러나 화재와 마찬가지로 항상 조심하고 현명하게 도구를 사용해야합니다. 괴짜 참고: 페이스 타임을 사용 하 여 내 아이폰에서 내 맥북을 호출 하 여이 문서의 상단에 이미지를 생산, 다음 맥북의 화면에 전화 카메라를 가리키는, 피드백을 만들기. 이제까지 하나가 있다면 재귀의 고전적인 예! 재귀는 처음에는 머리를 감싸는 것이 까다로울 수 있지만이 자습서에서 개념을 좀 더 명확하게 만들었으면합니다. 당신이 당신의 자신의 몇 가지 재귀 함수를 작성한 후에는 일반 항해를 찾아야합니다. 주어진 숫자에 대한 요인을 계산하는 재귀 함수를 작성해 봅시다. 현재 폴더에 여러 하위 폴더가 있는 경우 루프를 반복합니다. 하드 드라이브의 폴더 구조를 미러링하는 트리와 같은 구조를 만드는 함수의 인스턴스를 상상할 수 있습니다. 이 예제의 기본 케이스는 현재 폴더에 하위 폴더가 없는 경우에 발생합니다.

이 시점에서 함수의 해당 인스턴스는 더 이상 자신을 호출하지 않습니다. 함수의 끝에 도달하면 함수는 자동으로 컨트롤을 호출한 함수로 반환합니다. 결국 컨트롤은 “트리”의 맨 위로 백업되고 스크립트가 종료됩니다. 재귀 함수를 사용하여 피보나치 시리즈를 계산하는 것과 같이 직선 루프를 사용하는 것이 더 우아한 솔루션이 될 것이라고 생각합니다. 다음과 같은 재귀 함수를 예로 들어 보겠습니다. 이 방정식은 다음과 같이 나타낼 수 있습니다: n! = n * ((n – 1)!) 즉, 주어진 수에 대한 계수는 숫자 1 이하의 계수를 곱한 숫자와 동일합니다 – 이것은 재귀 함수의 경우 분명합니다! 예를 들어 factorial(6)을 호출할 수 있으며 무엇보다도 else 절로 이동해야 한다는 것을 알 수 있습니다. 그러나 이것은 PHP가 그 일을 하고 함수를 다시 호출해야한다는 것을 깨닫게될 수 있도록 요인에 대한 호출을 발생시킵니다 … 등등. ($number – 1)이 결국 충분히 작아지면 함수를 다시 호출하는 대신 1을 반환하고 중첩 된 각 함수 호출은 반환 값과 반환을 찾습니다. 우리는 호출 스택의 상단에 도착하면, 우리는 대답을 얻었다! 의사 코드에서 간단한 재귀 함수는 다음과 같습니다: 재귀 함수는 자체를 호출하는 함수입니다. 그러나 코드가 특정 수의 재귀 함수 호출을 수행해서는 안 하므로 PHP에서 주의해야 합니다. 즉, 원하는 결과가 발견된 후 재귀가 중지되는 메커니즘(IF 문 등)이 있어야 합니다.

함수가 무제한의 호출을 수행하도록 허용하면 (XDebug가 설치되어 있음) “치명적인 오류 : 최대 함수 중첩 수준 `100`에 도달하여 중단됩니다!” PHP는 또한 C/C++와 같은 재귀 함수 호출을 지원합니다.

Centro per un Futuro Sostenibile via Tacito, 84 00193 Roma tel. +39 06 90288228