지금 재귀함수쪽을 배우고잇는데
2의 제곱을 나타내는 코드인데 이해가 안가는 부분이 있어서 질문드립니다
#include<stdio.h>
long power(int, int);
void main()
{
long p;
int i;
for(i=0;i<=5;i++)
{
p = power(2,i);
printf("2 ^ %d = ] \n",i,p);
}
}
long power(int x,int y)
{
if(y == 0)
return 1;
else
return x * power(x,y-1);
}
여기서 맨마지막 retrun x * power(x,y-1); 이부분에
y-1이 왜 들어가야하는지 이해가안가네요..ㅜㅜ
어차피 retrun값을 주니까 -1안해도 돼는것 아닌가요??
X를 곱하니까 -1를 해야지 -1이 없으면 1승이추가됌
아 이해가 잘 안돼네요.. -1를 지워버리니까 실행하면 2 ^ 0 = 1 여기서 멈춰서 오류가뜨던데 왜그런거죠??
탈출을 못 해서
왜 탈출을 못하는거죠 retrun값이 1이여야만 탈출을 할수있는건가요??
y==0을 만족해야 다음 조건문에 있는 재귀호출을 실행하지않고 return 된 1을 곱함과 동시에 함수를 종료하기 때문입니다. 최초 입력된 y의 값이 0이 되려면 y-1이라고 설정해줘아되요
return 값이 1인 이유는 최종 제곱값에 1을 곱해봤자 그값은 변함이 없기때문입니다.
걍 1곱하고 재귀함수 탈출하는거임
http://blog.naver.com/nogoto/220432135094
제가쓴 재귀함수에 대한 이해인데 가시적으로 나타낸 코드 보면 이해가 될지도