资源限制》
时间限制:
10.0s
内存限制:
256.0MB
问题描述
样例输入
一个满足题目要求的输入范例。
3 10
样例输出
与上面的样例输入对应的输出。
数据规模和约定
输入数据中每一个数的范围。
例:结果在int表示时不会溢出。
代码:
import java.util.Scanner;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int k = sc.nextInt();
int n = sc.nextInt();
if(k == 0 || n == k){
System.out.println("1");
}else{
System.out.println(f(k,n));
}
}
public static int f(int k,int n ){
if(k==n||k==0){
return 1;
}
return f(k,n-1) + f(k-1,n-1);
}
}
代码分析:
如果输入的 k == 0 或者 k == n 的时候直接输出1,这个理解起来比较简单。接下来到递归的时候,这个问题和上台阶的问题很相似,但是我个人认为这个比较上台阶比较简单,先设置跳出条件,如果k == n 或者 k == 0 的时候,返回1,最后再返回所有的1相加的值,即就是最终我们需要的二项式系数值了。