꼬리 재귀는 얼랭의 성능에 대한 순회 재귀보다 낫습니까?
아니면 erlang 컴파일러도 순방향 재귀를 최적화합니까?
앞으로 재귀 대신 꼬리 재귀를 사용해야하는 이유가 있습니까?
제 의견으로는 앞으로 재귀가 더 예쁘게 보입니다.꼬리 재귀 대 얼랭의 순방향 재귀
5
A
답변
3
테일 재귀는 일반적으로 메모리를 적게 사용하기 때문에 더 좋습니다. 다음 호출에서 필요한 것을 가져와 스택에서의 메모리 사용을 최소화합니다. 또한 꼬리 재귀 코드가 최적화 될 때 필요없는 함수 반환을 버려 일부 경우에 약간 더 빠르게 만들 수 있습니다.
예를 들어 함수의 반환 값이 다른 함수를 호출하는 경우 스택에 중개 함수를 유지할 필요가 없습니다. 따라서 코드는 내부 함수에서 직접 호출자에게로 점프합니다.
비 꼬리 재귀는 경우에 따라 Erlang 컴파일러에 의해 꼬리 재귀에 최적화되지만이를 고려하지 않습니다. 할 수있을 때마다 꼬리 재귀 함수를 코딩하는 것이 좋은 습관이되게하십시오.
10
꼬리 재귀와 전달 재귀는 완전히 다른 개념입니다. 이 부분을 참조하십시오. discussion.
꼬리 재귀 적이며 따라서 최적화 된 순방향 재귀를 작성할 수 있습니다. 꼬리 재귀가 아닌 순방향 재귀를 작성할 수도 있습니다.이 경우 최적화되지 않습니다. 즉 스택 공간을 소비합니다.
관련 문제
- 1. 재귀, 꼬리 재귀 및 반복
- 2. 스칼라 및 꼬리 재귀
- 3. "및"및 꼬리 재귀
- 4. 꼬리 재귀 스택 오버플로
- 5. 아닌 꼬리 재귀 함수를 최적화
- 6. 하스켈 꼬리 재귀 예측 가능성
- 7. 스칼라는 꼬리 재귀 최적화를 지원합니까?
- 8. 꼬리 - 재귀 pow() 알고리즘을 memoization?
- 9. C++ 코드에서 꼬리 재귀 최적화
- 10. 꼬리 재귀 스타일의 코드가 아닌가요?
- 11. 꼬리 재귀 적 방법이 개 번호 배수로
- 12. 꼬리 재귀 합계, 전력, 프롤로그에서 gcd?
- 13. 꼬리 재귀 함수는 항상 피할 수 있습니까?
- 14. 재귀 대 반복 알고리즘
- 15. 변환 루프 ... 재귀 재귀
- 16. 재귀
- 17. 재귀
- 18. 재귀
- 19. 재귀
- 20. 재귀
- 21. 재귀
- 22. 예외를 통해 꼬리 재귀 최적화를 설명하는 참조 찾기
- 23. TCO를 구현하는 언어에서 꼬리 재귀의 재귀 깊이를 제한합니까?
- 24. 프롤로그, 삼각 숫자, 누적 기 및 꼬리 재귀
- 25. 꼬리 재귀 양식으로 바뀌는 일반적인 트리 재귀의 예를 찾으십시오.
- 26. pow 재귀 메서드에서 재귀 호출 줄이기?
- 27. 재귀 적으로 sqlite에서 재귀 계산을하는 대신?
- 28. 소수 요소에서 재귀 목록 재구성 (재귀 적으로)
- 29. DIFF 폴더 재귀
- 30. 경로 재귀