现在的位置: 首页 > 综合 > 正文

C语言 用递归和位移进行枚举子集合

2012年07月09日 ⁄ 综合 ⁄ 共 447字 ⁄ 字号 评论关闭

源码:

 1 #include <stdio.h>
 2 #define N 4
 3 int arry[N];
 4 
 5 void recursive (int a[], int n)
 6 {
 7     if ( n == N)
 8     {
 9         int i;
10         for(i = 0; i < N; ++i)
11             printf("%d ",a[i]);
12         printf("\n");
13         return ;
14     }
15     a[n]=0;
16     recursive(a, n+1);
17     a[n]=1;
18     recursive(a, n+1);
19 }
20 
21 void bitShift (int a)
22 {
23     for(int i = 0; i < N; ++i)
24     {
25         printf("%d ",a&1);
26         a >>= 1;
27     }
28     printf("\n");
29 }
30 
31 
32 int main()
33 {
34     printf("递归结果:\n");
35     recursive(arry, 0);
36     int i = 0;
37     printf("位移结果:\n");
38     for(i = 0; i< (1 << N); ++i) bitShift(i);
39     return 0;
40 }

 

【上篇】
【下篇】

抱歉!评论已关闭.