c语言递归函数求组合 递归函数c语言求和

C语言递归组合问题

#includeiostream

双流网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、响应式网站等网站项目制作,到程序开发,运营维护。创新互联从2013年创立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联。

using namespace std;

#include"stdlib.h"

#include"time.h"

void main()

{

time_t t;

srand((unsigned) time(t));

int m,n;

cinn;

cinm;

for(int i=0;im;i++)

{

coutrand()%n+1" ";

coutrand()%n+1endl;

}

}

第二种方法

下面是用了个递归函数

using namespace std;

#include"stdlib.h"

#include"time.h"

void digui(int n,int m)

{

for(int i=0;im;i++)

{

coutrand()%n+1" ";

}

coutendl;

n--;

if(n!=0)

digui(n,m);

}

void main()

{

time_t t;

srand((unsigned) time(t));

int m,n;

cinn;

cinm;

digui(n,m);

}

c语言 用递归函数求组合数并使输出结果为comb(2,1)=2的形式

#include stdio.h

int comb(int n, int m)

{

if (m==1)return n;

if (n==m||m==0)return 1;

return comb(n-1, m-1)+comb(n-1, m);

}

int main()

{

printf ("%d\n", comb(2, 1));

return 0;

}

C语言中如何用递归的方法求从n个数中取m个数的排列组合的所有情况,其中n

典型的组合问题,解法有递归、回溯等等

递归法较简单,代码如下:

void combine(int a[], int n, int m, int b[], int M);

参数:

a 存放候选数字

n 总项数

m 取出项数

b 存放选出结果

M  = m

#include "stdio.h"

#define MAX 100

void combine(int a[], int n, int m, int b[], int M);

int main(void)

{

int i;

int a[MAX], b[MAX];

for (i = 1; i  100; i++)

a[i - 1] = i;

combine(a, 5, 4, b, 4);

}

void combine(int a[], int n, int m, int b[], int M)

int i, j;

for (i = n; i = m; i--)

{

b[m - 1] = i - 1;

if (m  1)

combine(a, i - 1, m - 1, b, M);

else

{

for (j = M - 1; j = 0; j--)

printf("%d ", a[b[j]]);

printf("\n");

}

}

}

其他方法可查阅相关资料。

C语言 求组合数,,用递归方法

举个例子 不太明白是什么组合数

补充======

说白了就是求阶乘

fun是阶乘函数

直接调用即可

#include stdio.h

long sum=0;//组合数结果

long fun(int i) //阶乘

{

If(n==1)

return 1 ; /*递归出口*/

else

return i*fun(i-1); /*递归体*/

}

long com(int n, int m)

{

sum=fun(m)/fun(n)*fun(m-n);

return sum;

}

int main(void)

{

int m=9,n=4;

printf("%l" , com(4,9));

return 0;

}


文章标题:c语言递归函数求组合 递归函数c语言求和
链接地址:http://ybzwz.com/article/hgjicj.html