재귀함수 관련 간단한 질문입니다. ^^
내꽃
질문 제목 : 1~100까지 수중 짝수의 곱을 출력하되 루프문과 재귀함수를 이용하라
어디가 문제인지 정말 궁금합니다. ㅠ
그리고 재귀함수를 이용할때 k값이 음수가 되는것은 어떻게 처리해야죠?
질문 내용 :
#include stdio.h
double sum_loop(int k); // 루프구조를 이용한 해당 범위의 곱
double sum_recursive(int k); // 재귀함수를 이용한 해당 범위의 곱
int main(void)
{
int i=100;
printf(1~100까지 짝수의 곱을 구하시오\n);
printf(%lf\n,sum_loop(100));
printf(%lf\n,sum_recursive(100));
return 0;
}
double sum_loop(int k)// 루프구조를 이용한 해당 범위의 곱
{
int i,p=1;
for(i=1;i=k;i++)
{
if(i%2==0)
p *= i;
}
return p;
}
double sum_recursive(int k) // 재귀함수를 이용한 해당 범위의 곱
{
if(k%2==0)
{
return k*sum_recursive(k-2);
}
else
{
return (k-1)*sum_recursive(k-3);
}
}
-
사라
100까지 짝수곱을 한다고 해도 int형의 범위가 훌쩍 뛰어 넘습니다
loop함수에서 곱의 값을 저장하는 변수 p는 int형인데 double형으로 바꿔서 해보세요 -
스콜피온
아 그렇군요... 감사합니다. 한가지 더 질문해도될까요? 첫번째 루프구조...이거 실행결과가 계속 0이 나오는데요 아무리 봐도 맞는 문장인데... 뭐가 문제인지 궁금하네요. 부탁드립니다. ^^
-
백합
if(k 2)
return 1;
else
{
나머지
}
나머지 부분에 저 소스 넣으세요
재귀함수를 구현할때는 재귀의 종료조건을 넣어줘야되요