팩토리얼 계산문제..질문~
다이
#include stdio.h
double factorial(int n);
int main(void)
{
int n;
printf(\n n!을 계산합니다.);
printf(\n n을 입력하시오:);
scanf(%d, &n);
printf(\n n!=%.lf, factorial(n));
return 0;
}
double factorial(int n)
{
if(n==1)
return 1;
return n*factorial(n-1);
}
여기서
double factorial(int n)
{
if(n==1)
return 1;
return n*factorial(n-1);
}
이 부분을 for문을 사용하여 고친다고 고쳐봤습니다.
double factorial(int n)
{
int i;
for(i=1;i=n;i+=1)
n*=i;
return n;
}
라고해봤는데.. 선언이잘못됬는지 엄청나게이상한숫자가 나와요.. 어떻게수정해야할까요?
-
뿌잉
아훗 설명이 부족했나 보네요...ㅎㅎ
-
희선
아하... 감사합니닷..~
-
남
수다님 말씀대로 해도 답은 나옵니다.
double factorial(int n)
{
int i, sum=1;
for(i=1;i=n;i+=1)
sum*=i;
return sum;
}
수다님이 말씀하시는게 이걸 말씀하시는거죠 ^^ -
큰힘
수다님 말씀대로 고치면 제대로된 팩토리얼계산이안되네요 ㄷㄷ.. 어디가문제인기 4넣으면 4나오고,3넣으면3나오고... ㅠ,.ㅠ
-
작약
n*=i 대신 sum *= i 로 바꾸면 되는데...설명이 어려웠나...
-
반율하
아하... 흠냐..어떻게수정해야되지..수정작업..ㄱㄱ~
-
설아
double factorial(int n)
{
int i;
for(i=1;i=n;i+=1)
n*=i;
return n;
}
왜 틀렸는지 생각해봅시다. 만약에 n값이 3이 온다면
i = 1일 경우 입니다.
for(i = 1; i = 3; i++){
n = 3*1;
}
i = 2일 경우 입니다.
for(i = 1; i = 3; i++){
n = 3*2;
}
i=3일 경우입니다.
for(i = 1; i = 6; i++){
n = 6*2;
} -
시크포텐
무한으로도는건가요?..일단 scanf를통해 n값을 지정했으면, 예를들어 10까지했으면 1*2*~~~*9*10 까지하는거 아닌가용?..제가 이해를 잘못했나..ㄷㄷ
-
햇햇
n*=i로 넣으면 for문이 무한으로 돌텐데요...n말고 변수 하나 선언해서 거기다가 넣으세요...