这里先搞清楚递归的基本思想,递归函数的运行过程,暂且不考虑是否使用递归在效率方面的差异。

题目 1:

数的组合问题。从1,2,…,n中取出m个数,将所有组合按照字典顺序列出。如n=3,m=2时,输出:12 13 23

 1 #include <stdio.h>
 2 int Function(int n,int m,int a[],int depth,int output[],int size,int x) //n即指有n个数,m为从n个数中选取的个数,a[]为所选取的数组,depth递归进入深度,output答案,size为大小,x为当前扫描到的位置 
 3 {
 4     if(m == 0)
 5     {
 6         int i;
 7         for(i = 0;i < size;i++)
 8         {
 9             printf("%d ",output[i]);
10         }
11         printf("\n");
12         return 1;
13     }else
14     {
15         int i;
16         for(i = x;i <= n - m;i++)
17         {
18             output[depth] = a[i];
19             Function(n,m - 1,a,depth + 1,output,size,i + 1);
20         }
21     }
22 }
23 int main ()
24 {
25     int output[2];
26     int a[5] = {1,2,3,4,5};
27     Function(5,2,a,0,output,2,0);
28     return 0;
29 }
View Code

相关文章:

  • 2021-11-16
  • 2021-12-17
  • 2022-12-23
  • 2022-01-20
  • 2021-09-24
  • 2021-07-25
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-12-18
  • 2021-10-10
  • 2022-12-23
  • 2021-12-19
  • 2021-09-07
相关资源
相似解决方案