m个A与n个B的全排列个数
要去n个球中取m区分开来!!也要与n个元素的全排列区分开!
与 【n个球中取m个】的区别:
1.n个球题中 return f(n-1,m-1) + f(n-1,m); 是模拟出一个不存在的红球,取不取红球端对n都有影响
2.n个球题中 m与n之间有数量的关系, n不能小于m, n==m时返回一种情况(一样存在m减到0)
与 【n个元素的全排列】的区别:
1.n个元素题中 元素很多,而此题只有2个,元素很多的情况下,只要移动一次就是一种情况
2.n个元素题中 使用的是指定头个元素与第k个元素交换位置。 元素要求:一个循环+一个k指标
for中: f(data,k+1);
package com.aiqiongdiao;
public class Main {
public static int g(int m,int n){
if(m==0||n==0){ //出口:不断降,总会为0
return 1; //为一种情况,m与n之间没有大小约束
}
return g(m-1,n)+g(m,n-1);
}
public static void main(String[] args) {
System.out.println(g(3,2));
}
}
要去n个球中取m区分开来!!也要与n个元素的全排列区分开!
与 【n个球中取m个】的区别:
1.n个球题中 return f(n-1,m-1) + f(n-1,m); 是模拟出一个不存在的红球,取不取红球端对n都有影响
2.n个球题中 m与n之间有数量的关系, n不能小于m, n==m时返回一种情况(一样存在m减到0)
与 【n个元素的全排列】的区别:
1.n个元素题中 元素很多,而此题只有2个,元素很多的情况下,只要移动一次就是一种情况
2.n个元素题中 使用的是指定头个元素与第k个元素交换位置。 元素要求:一个循环+一个k指标
for中: f(data,k+1);