회귀함수 없이 타워를 만들고있습니다..

타워에서 판들이 움직이는 경로를 찍고있는데

반복되는 특성을 발견해서 for문으로 만들었습니다.

반복되는 특성은

<BLOCKQUOTE style="MARGIN-RIGHT: 0px" dir=ltr><BLOCKQUOTE style="MARGIN-RIGHT: 0px" dir=ltr><BLOCKQUOTE style="MARGIN-RIGHT: 0px" dir=ltr><BLOCKQUOTE style="MARGIN-RIGHT: 0px" dir=ltr><BLOCKQUOTE style="MARGIN-RIGHT: 0px" dir=ltr><BLOCKQUOTE style="MARGIN-RIGHT: 0px" dir=ltr><BLOCKQUOTE style="MARGIN-RIGHT: 0px" dir=ltr>

</BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE>

         ★          ★

▤ --함수A-->  s1  --함수B-->  s1

                   ▒

</BLOCKQUOTE>

기본형인 s(▤)가 함수A를 통과하고 (2->3으로 3->2로 바뀝니다★)

그리고 A다음에 s1이 추가됩니다.

그후 ★)가 함수B를 통과하고(1->2 2->3 3->1로 바뀝니다.▒)

그리고 s1다음에 ▒이 추가됩니다.

그래서

s1

모양이되고 이값은 다시 ▤ 에 저장됩니다.

for의 i가 ++되고 앞서 저장된 ▤ 값을이용해서 또 새로운 ▤ 을 얻어내고....원하는 층수까지의 ▤ 를 구합니다.

이런식으로 만드려고했는데 너무 어렵네요 ㅠㅠ...

출력된 값은..

대략

4층이면

1->2

3->2

1->3

.

.

. 쭉쭉쭉..

.

2->3

이런식으로 찍힙니다.

밑에 소스중 for문에 굵은 글씨를 만들어놨습니다.

------------------------

#include <stdio.h>
#include <stdlib.h>

int A();
int B();

int main(int argc, char *argv[])
{
char s1[]="1 -> 3\n";

char s[128999]; //s의 값이 꽤커질것같아서 무작정 크게잡았습니다.
char df[4]="123";
int i,m=0;

sprintf(s,"%c->%c\n%c->%c\n%c->%c",df[0],df[1],df[0],df[2],df[1],df[2]);

printf("층수를 입력하시오 :");
scanf("%d",m);
printf("\n");

if(m=1) printf("%s",s1);
else if(m=2) printf("%s",s);
else for(i=3;i==m;i++)
{
sprintf(s,"%s %s %s",A(s),s1,B(A(s)));
//근데 strncat이나 sprintf로합치면 i=4일때부터는 함수들어가도 2차원배열e로
//인식을 안해서 함수 A,B를 못쓰지 않나..

}
puts(s);


system("PAUSE");
return 0;
}


int A(char df[]) //df의 값을 2는 3으로, 3은 2로 바꿔주는 함수
{
int i;
for(i=0; i<=2; i++)
{
if(df[i]=='2')
df[i]='3';
else if(df[i]=='3')
df[i]='2';
else
df[i]='1';
}
return 0;
}
int B(char df[]) //df의 값중 1->2 로 2->3으로 3->1로 바꿔주는 함수.
{
int i;
for(i=0; i<=2; i++)
{
if(df[i]=='1')
df[i]='2';
else if(df[i]=='2')
df[i]='3';
else
df[i]='1';
}
return 0;
}