作业帮 > 综合 > 作业

C语言中的排列组合问题;

来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/04/28 00:41:57
C语言中的排列组合问题;
m个黑球,n个白球,排成一行,有多少种排法;
可以使用以下代码来求解;
int f(int m,int n)
{
if(m==0||n==0) return 1;
return f(m-1,n)+f(m,n-1);
}
怎么理解这个函数?
请给出详细的解释,非常感谢!
C语言中的排列组合问题;
f(m,n)表示m个黑球n个白球的排法,那好.
假如这个问题给你了,你会这样想:
1、我先把第一位放黑球,那么后面的排法有多少种:当然是f(m - 1,n)种,因为少了一个黑球.
2、同理,我先放白球,那么有f(m,n - 1)种.
总共就有f(m-1,n)+f(m,n-1)种,后面就递归了.但不能无限递归,需要指定界限,然后就有if(m==0||n==0) return 1;
这个和数学归纳法很相似.