재귀를 사용하여 PHP에서 배열 반전
재귀
재귀는 함수 자체를 호출하는 컴퓨터 과학의 프로세스입니다. 해당 함수를 재귀 함수라고 합니다. 특정 복잡한 문제는 재귀 방법을 사용하여 쉽게 해결할 수 있습니다.
재귀 함수를 이해하는 가장 좋은 방법은 피보나치 수열의 예를 보여주는 것입니다. 피보나치 수는 다음과 같이 정의할 수 있습니다.
F(0) = 0, F(1) = 1
F(N) = F(N-1) + F(N-2) (N > 1)
피보나치 숫자에 대한 재귀 함수는 다음과 같습니다.
function F(int $n): int {
if ($n == 0) return 0; // Stop condition
if ($n == 1) return 1; // Stop condition
return F($n - 1) + F($n - 2);
}
echo 'F(18) = ' . F(18); // F(18) = 2584
재귀 함수에서 가장 중요한 것은 함수가 자신을 호출하는 것을 중지하는 중지 조건입니다. 위의 코드 스니펫에는 두 가지 중지 조건이 있습니다.
if ($n == 0) return 0;
그리고
if ($n == 1) return 1;
이러한 정지 조건은
F(0) = 0
및 F(1) = 1
의 경우입니다. N > 1
인 경우 재귀 함수는 자신을 호출하고 F($n - 1) + F($n - 2)
값을 반환합니다. 중지 조건이 정의되지 않은 경우 재귀 함수는 무한 재귀 문제에 빠질 수 있습니다. 이것은 무한 루프의 경우와 같습니다.배열 반전
이것은 PHP에서 array_xxx()와 같은 네이티브 배열 함수를 사용하지 않고 재귀를 사용하여 배열을 뒤집는 예입니다.
배열을 뒤집기 위해
reverseArray(array $array)
라는 재귀 함수를 정의합니다. 입력 배열을 반복하고 입력 배열에서 읽은 각 요소가 반환 배열insertToFront()
의 앞에 배치되는 함수$result
를 호출하여 각 요소의 위치를 반대로 바꿉니다.function reverseArray(array $array) {
$result = [];
foreach ($array as $key => $value) {
// check if it is an array
if (is_array($value)) {
// insert into the front of the result array
$result = insertToFront($key, reverseArray($value), $result);
continue;
}
$result = insertToFront($key, $value, $result);
}
return $result;
}
재귀 함수
reverseArray(array $array)
에서 중지 조건은 요소의 값 유형이 배열이 아닌 경우입니다. 각 반복 배열 요소는 차례로 반환 배열$result
의 앞에 배치됩니다.$result = insertToFront($key, $value, $result);
요소의 값 유형이 배열이면 재귀 함수가 호출되어 이 배열을 뒤집습니다.
$result = insertToFront($key, reverseArray($value), $result);
반환 배열의 앞에 배열 요소를 배치하는 과정은 다음과 같습니다.
function insertToFront($key, $value, $array) {
$result = [];
// insert into the front of the result array
$result[$key] = $value;
// append all the rest data
foreach ($array as $oldKey => $oldValue) {
$result[$oldKey] = $oldValue;
}
return $result;
}
재귀 함수
reverseArray(array $array)
를 테스트하려면 먼저 인덱스 배열로 테스트해 보겠습니다.// Indexed array
$inputArray = [1, 2, 3, 4, 5];
echo 'Before Reverse:' . PHP_EOL;
var_dump($inputArray);
echo 'After Reverse:' . PHP_EOL;
var_dump(reverseArray($inputArray));
...
나머지 내용은 아래 링크를 참조하세요.
https://www.codebilby.com/blog/a41-reverse-an-array-in-php-by-using-recursion
Reference
이 문제에 관하여(재귀를 사용하여 PHP에서 배열 반전), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/yanyy/reverse-an-array-in-php-by-using-recursion-ll2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)