재귀 - 언제 사용 하시겠습니까? 사용하지 않으시겠습니까?재귀 - 언제 사용 하시겠습니까? 사용하지 않을 때는
답변
문제가 쉽게 생기고 큰 스택 메모리가있는 경우 (큰 스택의 경우) 사용합니다.
스택 메모리가 프리미엄 상태 인 경우 호출 스택이 너무 커지지 않으므로 오버플로가 발생하고 응용 프로그램이 실패하게됩니다.
참고 [언제 스택 크기에 대해 걱정합니까?] (http://stackoverflow.com/questions/1915900) – ChrisW
나는 그것이 ** 메모리 ** 일반적으로 메모리가 아니라 여기에 대해 이야기하고 있음을 분명히 밝힙니다. . 꼬리 전화를 걸고 최근 CLR에서 실행중인 경우에도 그 차이가있을 수 있습니다. –
사실 나는 당신에게 upvote를 줄 것이지만, 문제가 더 쉽게 될 때 말하지 않는다는 점에서 아마도 도움이되지 않을 것이다. 또한 심층 재귀 문제는 일반적으로 스택이 너무 커져서 성능 문제가 발생하는 것은 아니지만 스택 오버플로가 발생하여 프로그램이 실패합니다. – Jay
매우 언어에 의존합니다. 아주 좋은 꼬리 호출 최적화가없는 Ruby와 같은 언어에는 매우 조심하십시오. 진정한 함수형 언어는 재귀를보다 잘 처리합니다. 너무 많이 의존하기 전에 memoization에 대해 알고 있어야합니다. 내가 실제로 사용하는 곳은 입력과 출력의 전체 범위를 알고있을 때입니다. 내가 100 번이나 깊이 갈 수 없을 것이라는 것을 안다면 적어도 (루비에서는) 그것을 사용할 것이다. 그렇지 않으면 나는 다른 패턴을 발견한다. 재귀가 빨라 졌으면 좋겠어요. 왜냐하면 너무 자주 내가 사랑하는 정말로 깔끔한 2 행 솔루션을 찾을 수 있기 때문입니다. 그러나 그것은 안정적으로 또는 신속하게 수행되지 않으므로 대체해야 할 것입니다.
바, 물론 아담. 고마워. 고마워. – zachaysan
분명히 올바른 해결책이었고 다른 방법이 정확할 수있는 경우에만 사용했습니다.
아마도 계승 함수의 경우일지도 모르지만. 당신은 재귀에 의해 분명히 풀 수있는 일이 매우 빠르게 아주 추악한 성장할 수있는 방법의 예를 원하는 경우 Fibonnaci 순서
f(n) = f(n - 1) + f(n - 2), f(0) = f(1) = 1
을보십시오.
경우에만? 분명히 기능적 언어로 프로그래밍 한 적이 없습니다. –
그는 아마도 재귀를 사용하지 않을 것이라는 것을 의미했습니다 ... –
"다른 방법이 가능하지 않을 수 있습니까?" 그것은 말하기에 절대적으로 바보 같은 짓입니다. 반복적 인 접근법으로는 해결할 수없는 재귀를 사용하여 해결할 수있는 문제를 생각할 수 없습니다. –
일반적으로 tree 데이터 구조로 문제를 개념화 할 수 있으면 재귀를 사용하여 트리를 탐색 할 수 있습니다.
귀하의 언어/환경이 호출 스택 깊이에 제한이있는 경우이를 사용하지 않을 것입니다. Lotus Notes의 초기 버전을 사용하여 16 레벨 이하의 제한이 있었는데 거의 재귀를 사용할 수 없게되었습니다.
로터스 노츠 (Lotus Notes)가 가장 중요한 케이스라고 생각합니다. 재귀 사용에 대한 논쟁이라고보기는 어렵습니다. 모든 환경에는 스택 깊이의 제한이 있습니다. –
- 1. 언제 PendingIntent를 사용 하시겠습니까?
- 2. 회원사는 사용 또는 사용하지 않을 것인가?
- 3. 언제 HTML 5를 사용 하시겠습니까?
- 4. XamlServices.Transform()은 언제 사용 하시겠습니까?
- 5. iPhone 가속도계를 사용하지 않을 때
- 6. CoreAnimation을 사용하지 않는 경우와 사용하지 않을 경우
- 7. LINQ To Objects를 사용하지 않을 때?
- 8. gridview를 사용하지 않을 때
- 9. MVVM을 사용하지 않을 때?
- 10. MPI를 사용하지 않을 때
- 11. 사용시기 및 사용하지 않을 때 마지막으로 시도하십시오.
- 12. 언제 데이터베이스보기를 사용하지 않을까요?
- 13. 언제 GUID를 기본 키로 사용 하시겠습니까?
- 14. 언제 문자 대신 문자열을 사용 하시겠습니까?
- 15. 키보드를 사용하지 않을 때 자동으로 명령이나 프로그램을 실행 하시겠습니까?
- 16. 데이터를 저장하기 위해 세션을 사용하지 않을 때에도 sessionId를 유지 하시겠습니까?
- 17. PHP에서 심볼을 사용하거나 사용하지 않을 때
- 18. 스프링을 사용하지 않을 때의 문제점
- 19. Drupal 노드를 사용하지 않을 때?
- 20. 통합 테스트를 사용하지 않을 경우
- 21. 사용하지 않을 때 UIViewController 해제
- 22. OpenID를 사용 하시겠습니까? 사용하지 않으려면 어떻게해야합니까?
- 23. SVG 정보 (사용 하시겠습니까? 사용하지 않음)
- 24. 언제 웹 서비스를 사용하지 않아야합니까?
- 25. SQL Server CASE WHEN을 사용하지 않을 때
- 26. C에서 재귀 사용 #
- 27. 재귀 (사용 PHP)
- 28. DP 및 PX 측정을 사용하지 않을 때 및 사용하지 않을 때
- 29. 재귀 호출을 사용하지 않고 재귀 함수 다시 쓰기
- 30. 변환 루프 ... 재귀 재귀
재귀를 사용하는 경우를 이해하려면 재귀를 사용해야하는 시점을 이해해야합니다. :) – btreat
당신은 당신이 abotu를 궁금하게 생각하고 있거나 단지 막연한 일반적인 질문 일뿐입니다. – Chris
소련 러시아에서는 재귀가 당신을 사용합니다! – Jukebox