등차수열을 재귀함수를 이용해 작성하는 것좀 질문드려요
핫블랙
질문 제목 : 등차수열을 재귀함수를 이용해 작성하는 것좀 질문드려요제가 소스를 작성하긴 했는데 좀 이상하게나와서 질문드려요질문 내용 : 소스를 만들었는데 3,5,4를 대입하면 18 18 18 18 이렇게 나오네요
f함수에서 문제가 있는거같은데 어떤식으로 수정해야 하는지 좀 알려주시면 감사하겠습니다#includestdio.h
#includestdlib.h
int f(int a,int d,int n);
int main()
{
int a,d,n; /* a는 초항,d는공차,n은 갯수 */
int i,*p;
printf(초항을 입력하세요 :);
scanf(%d,&a);
printf(공차를 입력하세요 :);
scanf(%d,&d);
printf(항의 갯수를 입력하세요 :);
scanf(%d,&n);
p=(int *)malloc(sizeof(int)*n);
if(p==null)
{
printf(메모리부족);
return 1;
}
for(i=0;in;i++)
{
*(p+i)=f(a,d,n);
printf(%d ,*(p+i));
}
free(p);
return 0;
}
int f(int a,int d,int n)
{
if(n=0)
{
return 0;
}
else if(n==1)
{
return a;
}
else
{
return d+f(a,d,n-1);
}
}
-
참이
그니깐여 ㅋㅋㅋㅋ동적할당 문제라기보다는
최초 질문에서는
for(i=0;in;i++) i 일때
{
*(p+i)=f(a,d,n); n을 쓰고있고
}
풀었다고 하신곳에서는
for(n=1;n=m;n++) n 일때
{
p=f(a,d,n); n 을 사용하신...
ㅎㅎㅎㅎ -
Regretting
아 지금은 됬습니당... 저거랑은 다르게하긴했는데 그냥 동적할당안쓰고
m=n;
\t
\tfor(n=1;n=m;n++)
\t{
\t\tp=f(a,d,n);
\t printf(\%d \ -
토리
*(p+i)=f(a,d,n);
n 이 들어가는거 맞아용???? i 아니궁???