问题
m个A,n个B可以组成多少个不同排列的问题。
eg:
- 3个A,1个B
- BAAA ABAA AABA AAAB(4个)
思路
对首字母是A还是B进行划分:
- 首字母为A的情况:返回m-1个A和n个B;
- 首字母为B的情况:返回m个A和n-1个B。
- 当m降低为0时,全都是A,返回1;
- 当n降低为0时,全都是B,返回1;
实现代码
package suanfa;
public class list{
public static int f(int m,int n)
{
if(m==0||n==0)
{
return 1;
}
return f(m-1,n)+f(m,n-1);
}
public static void main(String[] args) {
System.out.println(f(3,1));
}
}