먼저 면접 질문을 살펴보겠습니다. 질문은 다음과 같습니다. 스택이 있고, 요소 1, 2, 3, 4, 5를 한 번에 밀어 넣으면 결과는 [1, 2, 3]입니다. , 4, 5] 이제 재귀 방법을 사용하여 스택의 요소를 뒤집을 수 있으며 결과는 [5,4,3,2,1]입니다. 질문 요구 사항이 없으면 비교적 간단할 것입니다. arr.reverse()를 사용하여 문제를 직접 해결할 수 있지만, 초보자로서 주의 깊게 연구해야 합니다.
스택 [1, 2, 3, 4, 5]는 두 부분, 즉 스택의 최상위 요소 1과 나머지 부분 [2, 3]으로 구성된 것으로 간주합니다. , 4, 5 ].
[2, 3, 4, 5]를 뒤집어서 [5, 4, 3, 2]로 바꾼 다음 원래 최상위 요소 1을 스택 맨 아래에 놓으면 전체 스택은 다음과 같습니다. 거꾸로 하면 [5, 4, 3, 2, 1]이 됩니다.
다음으로 두 가지를 고려해야 합니다. 첫째, [2, 3, 4, 5]를 [5, 4, 3, 2]로 바꾸는 방법입니다. 우리는 [2, 3, 4, 5]가 스택의 최상위 요소 2와 나머지 부분 [3, 4, 5]의 두 부분으로 구성되어 있다고 생각합니다.
먼저 [3, 4, 5]를 뒤집어 [5, 4, 3]이 된 다음 이전 최상위 요소 2를 스택 맨 아래에 놓아 [5, 4, 3, 2가 됩니다. ].
[3, 4, 5]를 뒤집는 방법에 대해... 많은 독자들이 이것이 재귀라고 생각할 수도 있습니다. 즉, 스택을 반전시키려고 할 때마다 현재 스택의 최상위 요소가 튀어나오고, 나머지 요소로 구성된 스택을 반전시키고, 마지막으로 남은 요소로 구성된 스택의 맨 아래에 이전 최상위 요소를 배치합니다. 재귀 종료 조건은 남은 스택이 비어 있다는 것입니다
//这个函数的作用是把栈中的元素展开 function reverseStack(arr){ if( arr.length != 0 ) { var topItem = arr.pop() reverseStack(arr) pushStack(arr, topItem) } return arr}//这个函数的作用是把函数进行颠倒 function pushStack(arr, item){ else{ console.log(arr) if(arr.length == 0){ arr.push(item) }
관련 권장 사항:
위 내용은 JavaScript는 재귀적 방법을 사용하여 스택 요소를 뒤집습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!