재귀를 사용하지 않고 JSON 구문 분석기를 작성할 수 있습니까? 그렇다면 어떤 접근 방식을 제안 하시겠습니까?재귀를 사용하지 않고 JSON 구문 분석기를 작성할 수 있습니까?
3
A
답변
4
동일한 반복 구현으로 재귀 코드를 재현 할 수 있습니다.
이 질문은 아주 능숙하게이를 설명 : Is it possible to remove recursion from this function?
1
내가 James에 동의 - 어떤 재귀 코드는 이론적으로 반복적 인 접근 방식을 사용하여 구현 될 수있다. 참조 된 링크에 설명 된 스택 메소드는 유효한 옵션입니다. 다른 방법으로는 n
깊이로 하드 코딩 할 수 있으며, 그런 다음 깊이가 제한된다는 명백한 위험이 있습니다.
JSON 처리 코드를 실행하려는 환경과 제약 조건에 대해 알지 못하는 경우 어떤 접근 방식이 가장 적합하다고 말하는지는 어렵습니다. 몇 가지 고려해야 할 : 당신이 할 수있는 고정 깊이를 사용
- 재귀 코드가 수행하는 것이 간단합니다 스택을 많이 사용하지 않아도 "더 효율적"이지만 잘 확장되지 않습니다.
n
- 깊이 시나리오 - 스택 기반 코드는 깊이 시나리오를 처리 할 수 있지만 다른 시나리오에서는 직관적이지 않을 수 있습니다. 프로그래머
또한 트리 구조를 선형화 할 수 있습니다 (JSON의 객체 그래프는 암시 적으로 배열 전용으로 가상 루트가 "array"일 수 있다고 가정). 이를 통해 플랫 스트림 처리 방법을 사용할 수 있습니다. 추가 단계를 수행하고 DOWN
및 UP
과 같은 인공 토큰을 주입하면 매우 쉽게 읽을 수 있습니다. 이것은 컴파일러 디자인 및 언어 분석에서 나올 수 있지만 여기 개념으로 도움이 될 수 있습니다.
관련 문제
- 1. 루프 또는 재귀를 사용하지 않고 배열 인쇄
- 2. 재귀를 사용하지 않고 문자열에서 반복 문자 제거
- 3. CakePHP 모델 관계 재귀를 사용하지 않고
- 4. JavaScript로 JQuery 라이브러리를 사용하지 않고 어떻게 다시 작성할 수 있습니까?
- 5. API를 사용하지 않고 JSON 문자열을 구문 분석하는 방법은 무엇입니까?
- 6. eval을 사용하지 않고 json 객체를 반복 할 수 있습니까?
- 7. 아무런 단언도하지 않고 테스트를 작성할 수 있습니까?
- 8. 의미 작업에서 오류가 발견되면 구문 분석기를 중지합니다.
- 9. 주석을 사용하지 않고 Jackson JSON 프로세서를 사용하십시오.
- 10. SDK가없는 Android 앱을 작성할 수 있습니까?
- 11. `$ this-> Model-> query()`를 사용하지 않고 어떻게 CakePHP에서 복잡한 find 질의를 작성할 수 있습니까?
- 12. 버퍼 문자열을 사용하지 않고 문자열을 뒤 바꿀 수있는 함수를 작성할 수 있습니까?
- 13. Objective-C를 사용하지 않고 C++ MacOS X 스크린 세이버를 작성할 수 있습니까?
- 14. 표현식뿐만 아니라 선행 구문 분석기를 사용합니까?
- 15. 메모리를 차지하지 않고 아무것도하지 않는 C 프로그램을 작성할 수 있습니까?
- 16. 구문 분석기를 작성하여 AST에서 lucene 구문을 구문 분석하는 방법
- 17. .NET에서 구문 분석기를 작성하는 방법은 무엇입니까?
- 18. 재귀를 사용하지 않고 n 차원 배열 (n은 변수)을 반복하는 방법이 있습니까?
- 19. MappingJacksonJsonView : @JsonIgnore를 사용하지 않고 필드를 무시합니다.
- 20. Grails에서 Spring을 작성할 수 있습니까?
- 21. 어떻게이 쿼리를 작성할 수 있습니까?
- 22. Javascript로 컴파일러를 작성할 수 있습니까?
- 23. Groovy에서 어노테이션을 작성할 수 있습니까?
- 24. yacc은 문법 규칙에서 구문 구문 분석기를 어떻게 생성합니까?
- 25. 빌드 및 분석을 실행할 때 분석기를 사용하지 않아야합니까?
- 26. C# using 문을 중괄호없이 작성할 수 있습니까?
- 27. JSON 파서가 eval을 전혀 사용하지 않고 어떻게 작동하는지 설명 할 수 있습니까?
- 28. Ruby는 acts_as_nested_set을 재귀없이 JSON 해시로 변환 할 수 있습니까?
- 29. JSON 구문 포함
- 30. XML 구문 분석 nsxmlparser 클래스의 대리자 메서드를 사용하지 않고
잘못되었습니다. 필요한 것은 스택뿐입니다. 재귀 호출을 입력하면 스택에 데이터가 추가되고 제거되는 상태가됩니다. – Scharron
실제로, 반복적 인 코드보다 덜 우아하고 이해하기 어려운 코드를 사용하게됩니다. – NullUserException
기본적으로 옳습니다. 그것은 내가 택한 프로그래밍 과정의 전체 장이었습니다 : 재귀 적에서 반복적으로 변환하십시오. –