이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
유.강민
가입: 2011년 3월 22일 올린 글: 38
|
올려짐: 2011년5월1일 0:20 주제: 재귀함수의 인자가 크면 오류뜹니다 |
|
|
코드: | (rec x y => ifzero y then 0 else (y+ (x (y-1)))) 4 |
위같은 식에서 인자가 5이상일떄 리듀스하면 결과가 깨져있습니다.
제 코드가 문제있는건지 몰라서 아님 오캐밀의 제한인지 잘 모르겠습니다..
근데 이전 버전의 스케레톤 쓸때 reduce함수를 lazy evaluation에서 eager하게 바꾸면 해결이 돼긴했었는데
새로운 스케레톤에서는 eager로 구현해도 해결이 안됩니다.
----------
재차 확인결과 제 코드 문제였습니다 ^^;;
유.강민 가 2011년5월2일 15:58에 수정함, 총 1 번 수정됨 |
|
위로 |
|
|
이원찬
가입: 2010년 3월 4일 올린 글: 34
|
올려짐: 2011년5월2일 3:20 주제: |
|
|
일단 결과가 깨져있다는 말이 무슨 뜻인지 모르겠습니다.
예외가 발생한다는 말인가요?
그리고 조교의 모범답안은 인자가 20인 경우에 대해서도 오류 없이 동작합니다.
그 말은 OCaml의 문제는 아니라는 이야기겠죠?
본인의 구현을 다시 살펴보시기 바랍니다.
제 짐작으로는 구현하신 코드에서 OCaml의 재귀호출을 너무 많이 발생시켜서
call stack overflow가 나는 것 같습니다.
질문 내용만으로는 이 밖에 어디가 문제가 될 지 떠오르지 않네요.
좀 더 구체적으로 문제가 되는 부분을 말씀해주시겠습니까? |
|
위로 |
|
|
|