0
点赞
收藏
分享

微信扫一扫

算法训练-递归求二项式系数值-Java


问题描述

算法训练-递归求二项式系数值-Java_java


代码演示

import java.util.Scanner;

/**
* 输入3,10 输出120
* 即:10*9*8/3/2/1 = 120
*
* @author Clearlight
*
*/
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int k = sc.nextInt();
int n = sc.nextInt();

System.out.println(f(k,n));
}

public static int f(int k, int n) {

if(k==0 || k==n) {
return 1;
}

return f(k,n-1) + f(k-1,n-1);
}

}


代码分析

在写这道题时,之前看了几节关于递归的讲解,写起来很简单。
根据给的提示的那张图片便可以根据它来写出递归的公式以及条件。

思路:

找重复:C(k,n)=C(k,n-1)+C(k-1,n-1),求C(k,n-1)和C(k-1,n-1)是原问题的重复(规模更小)-子问题
找变化:变化的量应该作为参数(k和n一直在变化)
找边界:出口(k=0或k=n)

根据这三个条件即可写出一个完整的递归.

另外,几个关于递归的练习,可以看看:

​​递归的实例-Java​​


举报

相关推荐

0 条评论