728x90
친구가 요청한 코딩 풀이
문제
#include <stdio.h>
int recursive(int n)
{
int i;
if (n < 1)
return 2;
else
{
i = (2*recursive(n-1)) + 1;
printf("%d\n", i);
return i;
}
}
int main()
{
int i;
printf("숫자를 입력하시오 : ");
scanf("%d", &i);
recursive(i);
}
/* Q. 위 값에 5를 입력한 경우 출력 되는 값을 확인 하시오 */
풀이
int recursive(5)
{
int i;
if (5 < 1)
{
return 2;
}
else
{
i = (2 * recursive(5-1)) + 1;
/* 위의 recursive(4)로 호출 START */
int recursive(4)
{
int i;
if (4 < 1)
{
return 2;
}
else
{
i = (2 * recursive(4-1)) + 1;
/* 위의 recursive(3)로 호출 START */
int recursive(3)
{
int i;
if (3 < 1)
{
return 2;
}
else
{
i = (2 * recursive(3-1)) + 1;
/* 위의 recursive(2)로 호출 START */
int recursive(2)
{
int i;
if (2 < 1)
{
return 2;
}
else
{
i = (2 * recursive(2-1)) + 1;
/* 위의 recursive(1)로 호출 START */
nt recursive(1)
{
int i;
if (1 < 1)
{
return 2;
}
else
{
i = (2 * recursive(1-1)) + 1;
/* 위의 recursive(0)로 호출 START */
int recursive(0)
{
int i;
if (0 < 1)
{
/* 이 로직을 타고 recursive(0)의 리턴 값 2 */
return 2;
}
else
{
/* 타지 않는 로직 */
i = (2 * recursive(0-1)) + 1;
printf("%dwn", i);
return i;
}
}
/* 위의 recursive(0)로 호출 END */
/*
recursive(0) 의 리턴값 2이므로
i = (2 * 2) + 1
i = 5
*/
printf("%dwn", i); // i 값 5출력
return i; // recursive(1)의 리턴 값은 5
}
}
/* 위의 recursive(1)로 호출 END */
/*
recursive(1) 의 리턴값 5이므로
i = (2 * 5) + 1
i = 11
*/
printf("%dwn", i); // i 값 11출력
return i; // recursive(2)의 리턴 값은 11
}
}
/* 위의 recursive(2)로 호출 END */
/*
recursive(2) 의 리턴값 11이므로
i = (2 * 11) + 1
i = 23
*/
printf("%dwn", i); // i 값 23출력
return i; // recursive(3)의 리턴 값은 23
}
}
/* 위의 recursive(3)로 호출 END */
/*
recursive(3) 의 리턴값 23이므로
i = (2 * 23) + 1
i = 47
*/
printf("%dwn", i); // i 값 47출력
return i; // recursive(4)의 리턴 값은 47
}
}
/* 위의 recursive(4)로 호출 END */
/*
recursive(4) 의 리턴값 47이므로
i = (2 * 47) + 1
i = 95
*/
printf("%dwn", i); // i 값 95출력
return i; // recursive(5)의 리턴 값은 95
}
}
728x90
'개발및업무 > 기타용어정리' 카테고리의 다른 글
Document Object Model(DOM) (0) | 2012.06.29 |
---|---|
윈폼과 웹폼의 차이 (0) | 2011.11.01 |
익스트림 프로그래밍(XP) 규칙 (0) | 2011.06.28 |
인자 매개변수 차이 (0) | 2011.06.28 |