멱집합을 구하는 소스인데요ㅠㅠ..해결좀 ㅠㅠ
갅지삘여우
#includestdio.h
int powerset(int i);
int main(void)
{
int i;
printf(집합 S의 멱집합(POWERSET)을 구하는 프로그램입니다.\n);
printf(1부터 n까지 멱집합을 구하시겠습니까?(n입력):);
scanf(%d, &i);
printf(1부터 %d 까지의 집합 S의 POWERSET은 %d입니다.\n, i, powerset(i));
return 0;
}
int powerset(int i)
{
int k,j,nk;
if(i==0)
printf({ }\n);
else
for(k=1;k=i;k++)
nk*=2;
for ( k=1; k=nk; k++ )
{
printf({ );
for ( j=1; j=i; j++ )
if ( i-1 & ( 1(j-1) ) )
printf(%d,, j);
printf( },);
}
printf( }\n);
return 0;
}
일단 실행은 되는데요 제가 원하는 결과를 얻을수가 없네요 ㅠㅠ..
자꾸 무한루프가 되버리는데 뭔가 제가 잘못작성한것 같아요 ㅠ.
특히 파워셋 함수에서 값을 0으로 리턴하는것이 맞는건지..ㅎㄷ;..
한번 보시고 원인좀 알려주시고 어떻게 하면 되는지좀 ㅠ..
아그리고 이건 제가 하다가 궁금한건데요.
멱집합을 구할때 재귀적으로 하는것이 더 효율적이지 않나요?ㅎ.ㄷ.
-
파라 2023-11-23
멱집합을 출력하고 싶은것입니다. 즉 s={0,1}일때 파워셋은 {},{1} 이런식으로 출력할려고 하는거에요 ㅎㄷ..
아 흠 그럼 재귀함수를 이용하지말고 반복문으로 하는것이 더 효율적이란 말씀이시군요? -
그녀는귀여웠다 2023-11-23
멱집합의 갯수를 구하고 싶은 건지, 멱집합을 구하고 싶은 건지 확실히 해 주시기 바랍니다.
그리고 반복문보다 효율적인 재귀란 없습니다.