게시판 인덱스

 
 FAQFAQ   검색검색   멤버리스트멤버리스트   사용자 그룹사용자 그룹   사용자 등록하기사용자 등록하기 
 개인 정보개인 정보   비공개 메시지를 확인하려면 로그인하십시오비공개 메시지를 확인하려면 로그인하십시오   로그인로그인 

재귀함수가 작동 안합니다.

 
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.310 Programming Languages (Spring 2011)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
유.강민



가입: 2011년 3월 22일
올린 글: 38

올리기올려짐: 2011년4월27일 0:27    주제: 재귀함수가 작동 안합니다. 인용과 함께 답변

코드:
(rec x y => (ifzero y then 0 else (x x (y - 1)))) 5

위와 같이 테스트하면 evalm m에서
코드:
Fatal error: exception M.RuntimeError("not a number value")

오류가 뜹니다. x x 대신 x하나면 넣으면 제대로 나오는군요.
자기자신을 호출할때 정의상 자기 자신을 인자로 넣어줘야되지 않나요?
위로
사용자 정보 보기 비밀 메시지 보내기
정영범



가입: 2005년 9월 5일
올린 글: 167

올리기올려짐: 2011년4월27일 0:56    주제: 인용과 함께 답변

예, 넣어줘야하는데 조교가 빼먹었군요.
고쳐서 올리도록 하겠습니다.

-----------------------
제가 착각했네요.
다시보니 APP에서 F일때랑 R일때를 구분해서 제대로 구현했네요.
조교가 말한 것처럼 원하시는 결과를 얻으려면

x (x (y - 1))을 쓰셔야 합니다.

x x (y-1)로 쓰시면 x에 인자로 x와 (y-1)을 넘겨주는 것과 같아서
x가 number가 아니라는 에러가 발생합니다.


정영범 가 2011년4월27일 9:06에 수정함, 총 1 번 수정됨
위로
사용자 정보 보기 비밀 메시지 보내기 이메일 보내기 글 올린이의 웹사이트 방문
김진영_



가입: 2009년 12월 9일
올린 글: 337

올리기올려짐: 2011년4월27일 8:57    주제: 인용과 함께 답변

x를 한 번만 쓰시는 것이 맞습니다.
M0의 문법에 따라, 자기 자신의 이름을 적어 주는 부분은 recursive function을 정의하는 "rec id id =>e " 의 경우이고요, 함수를 apply하는 부분인 "e e"에는 첫 번째 자리에 함수(fn 또는 rec 타입의), 두 번째 자리에 함수가 인자로 받을 것을 넣어 주시기만 하면 됩니다.



코드:
(rec x y => (ifzero y then 0 else (x (y - 1)))) 5


위와 같이 해 보시면 eval의 결과는 0이 됩니다.
위로
사용자 정보 보기 비밀 메시지 보내기 이메일 보내기
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.310 Programming Languages (Spring 2011) 시간대: GMT + 9 시간(한국)
페이지 11

 
건너뛰기:  
새로운 주제를 올릴 수 없습니다
답글을 올릴 수 없습니다
주제를 수정할 수 없습니다
올린 글을 삭제할 수 없습니다
투표를 할 수 없습니다


Powered by phpBB 2.0.21-7 (Debian) © 2001, 2005 phpBB Group
Translated by kss & drssay