public class Test{
public static int f(int n,int m){
//n个取m个
if(n<m) return 0;
if(n==m) return 1;
if(m==1) return n;
return f(n-1,m-1)+f(n-1,m);//n个里有个特殊球x,取法划分:包不包含x
}
public static void main(String args[]){
int i=f(10,3);
System.out.println(i);
}
public static int f(int n,int m){
//n个取m个
if(n<m) return 0;
if(n==m) return 1;
if(m==1) return n;
return f(n-1,m-1)+f(n-1,m);//n个里有个特殊球x,取法划分:包不包含x
}
public static void main(String args[]){
int i=f(10,3);
System.out.println(i);
}
}
思路:对一个问题先从简单入手,如这道题,可以假设从3个中取2个,这样子就很明显得出有三种取法;1,是若必须取A,则有两种;2,若不取A,则有一种。接着往上递推,能得出“主架”(递归的核心),写出口就容易多了。