2010-07-20 2 views

답변

4

동일한 반복 구현으로 재귀 코드를 재현 할 수 있습니다.

이 질문은 아주 능숙하게이를 설명 : Is it possible to remove recursion from this function?

+1

잘못되었습니다. 필요한 것은 스택뿐입니다. 재귀 호출을 입력하면 스택에 데이터가 추가되고 제거되는 상태가됩니다. – Scharron

+1

실제로, 반복적 인 코드보다 덜 우아하고 이해하기 어려운 코드를 사용하게됩니다. – NullUserException

+0

기본적으로 옳습니다. 그것은 내가 택한 프로그래밍 과정의 전체 장이었습니다 : 재귀 적에서 반복적으로 변환하십시오. –

1

내가 James에 동의 - 어떤 재귀 코드는 이론적으로 반복적 인 접근 방식을 사용하여 구현 될 수있다. 참조 된 링크에 설명 된 스택 메소드는 유효한 옵션입니다. 다른 방법으로는 n 깊이로 하드 코딩 할 수 있으며, 그런 다음 깊이가 제한된다는 명백한 위험이 있습니다.

JSON 처리 코드를 실행하려는 환경과 제약 조건에 대해 알지 못하는 경우 어떤 접근 방식이 가장 적합하다고 말하는지는 어렵습니다. 몇 가지 고려해야 할 : 당신이 할 수있는 고정 깊이를 사용

  • 반복 코드를 (JSON을 처리하기 위해 거기에 거의 모든 언어 예제의 99 %와 호환)를 관리 할 수있는 경우

    • 재귀 코드가 수행하는 것이 간단합니다 스택을 많이 사용하지 않아도 "더 효율적"이지만 잘 확장되지 않습니다. n - 깊이 시나리오
    • 스택 기반 코드는 깊이 시나리오를 처리 할 수 ​​있지만 다른 시나리오에서는 직관적이지 않을 수 있습니다. 프로그래머

    또한 트리 구조를 선형화 할 수 있습니다 (JSON의 객체 그래프는 암시 적으로 배열 전용으로 가상 루트가 "array"일 수 있다고 가정). 이를 통해 플랫 스트림 처리 방법을 사용할 수 있습니다. 추가 단계를 수행하고 DOWNUP과 같은 인공 토큰을 주입하면 매우 쉽게 읽을 수 있습니다. 이것은 컴파일러 디자인 및 언어 분석에서 나올 수 있지만 여기 개념으로 도움이 될 수 있습니다.

  • 관련 문제