网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

c语言递归函数组合数 c语言求组合数递归高效

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个正整数中选择k个数的不同组合数

#includestdio.h

int n,k,a[20],b[20]={0};

void work(int k1)

{int i,j,t;

t=k1==0?0:a[k1-1]+1;

for(i=t;in;i++)

{

if(!b[i])

{

a[k1]=i;

b[i]=1;

if(k1==k-1)

{

for(j=0;jk;j++)

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

printf("\n");

}

else

work(k1+1);

b[i]=0;

}

}

}

main()

{

int i;

scanf("%d %d",n,k);

for(i=0;in;i++)a[i]=i;

work(0);

getch();

return 0;

}

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语言递归求组合数,自己分析只得出(1)5,4,3(2)4,3,2(1)3,2,1运行结果如图片,请帮忙分析递归运行过程?

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

{ a[k]=i;

if (k1)

comb(i-1,k-1);

else

{

counts++;

for (j=a[0];j0;j--)

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

printf("\n");

}

}

}

这是一个递归求组合的算法,递归会把所有条件的"遍历"一次,根据要求处理。

else 是最终k=1时输出,不用解释。关键看if 里面 comb(int m,int k) 有个for 使得a[k]=i; i的取值可以为 m-k,

所以对于输入5 3

对应的是a[0]取为5 -3

a[1] 4-2,

a[2] 3-1,通过递归输出了所有组合。

进一步学习,下面这篇文章不错

C语言类问题.用递归法求从n个人中选择k个人组成一个委员会的不同组合数.

#include stdio.h

#include stdlib.h

int Comb(int n, int k)

{

if (n==k || k==0)

return 1; //边界值

else

return Comb(n-1, k)+Comb(n-1, k-1);    

}

void main()

{

int n, k;

printf("请输入总人数 n: ");

scanf("%d", n);

printf("请输入委员会人数 k: ");

scanf("%d", k);

if (k0 || n0 || kn) //输入数据的合法性判断

printf("输入不合法!");

else

printf("组合数有 %d 个!",Comb(n, k));

system("pause");

}


本文名称:c语言递归函数组合数 c语言求组合数递归高效
链接地址:http://bjjierui.cn/article/dodjcip.html

其他资讯