C 언어나 파이썬에서 함수의 인자값에 따라 중첩반복의 깊이를 조절하게 프로그램을 짤수 있을까요?
5를 넣으면 5단계 중첩해서 반복하고 10을 넣으면 10단계로 중첩하구요.
이게 리스프에서 얘기하는 고차함수와 관계 있는 개념인가요?
1. 단계라는 게 이중 루프나 삼중 루프를 말씀하시는 것이라면, 재귀함수를 이용하면 된다고 생각합니다.
int func(int level, int count) { if (level > 0) { int i; for (i=0; i<count; ++i) { func(level-1, count); // level 회의 단계만큼 루프가 중첩 } } }
oppor님께서 이런 답변을 원하시는 것이 아니리라고 생각하지만 일단 달아봤습니다. 고차함수는 전혀 모르는 개념이네요.
저는 이렇게 생각했습니다.
재귀는 잘 쓰질 않아서 몰랐는데 이런식으로 활용하면 되는거였군요.ㅎㅎ 조금 더 응용하면 각 반복의 단계마다 다른 알고리즘으로 반복하는것도 가능하겠네요. 빠르고 정확한 답변 감사드립니다.
HDNua님의 형태를 조금 일반화하면 '스택'을 이용하면 될 것이고,
문제가 단순한 경우에는 '일차 배열'의 단순한 연산 형태로 단순화시킬 수 있겠네요.
length = 6
0,0,0,0,0,0 0,0,0,0,0,1 0,0,0,0,0,2 ... 9,9,9,9,9,9
를 반복하는 문제가 일차 배열을 이용해서 단순하게 구현되지만,
이걸 자세히 들여다 보면 스택의 원리가 내재되어 있으니까요.
( 캐리의 개념이 스택의 pop - push, 재귀 호출의 return - recall 을 단순화시킨 것으로 볼 수 있음 )
===
http://cafe.daum.net/codeinside
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
의견
1. 단계라는 게 이중 루프나 삼중 루프를 말씀하시는 것이라면, 재귀함수를 이용하면 된다고 생각합니다.
oppor님께서 이런 답변을 원하시는 것이 아니리라고 생각하지만 일단 달아봤습니다. 고차함수는 전혀 모르는 개념이네요.
저는 이렇게 생각했습니다.
재귀는 잘 쓰질 않아서 몰랐는데 이런식으로 활용하면
재귀는 잘 쓰질 않아서 몰랐는데
이런식으로 활용하면 되는거였군요.ㅎㅎ
조금 더 응용하면 각 반복의 단계마다 다른 알고리즘으로 반복하는것도 가능하겠네요.
빠르고 정확한 답변 감사드립니다.
HDNua님의 형태를 조금 일반화하면 '스택'을
HDNua님의 형태를 조금 일반화하면 '스택'을 이용하면 될 것이고,
문제가 단순한 경우에는 '일차 배열'의 단순한 연산 형태로 단순화시킬 수 있겠네요.
length = 6
0,0,0,0,0,0
0,0,0,0,0,1
0,0,0,0,0,2
...
9,9,9,9,9,9
를 반복하는 문제가 일차 배열을 이용해서 단순하게 구현되지만,
이걸 자세히 들여다 보면 스택의 원리가 내재되어 있으니까요.
( 캐리의 개념이 스택의 pop - push, 재귀 호출의 return - recall 을 단순화시킨 것으로 볼 수 있음 )
===
http://cafe.daum.net/codeinside
댓글 달기