迭代和JDB
迭代和JDB
一、题目要求:
1 使用C(n,m)=C(n-1,m-1)+C(n-1,m)公式进行递归编程实现求组合数C(m,n)的功能
2 m,n 要通过命令行传入
3 提交测试运行截图(至少三张:正常如c(3,2)、异常如c(2, 3)、边界情况如c(m,m))
4 提交正常情况下用JDB调试程序c(X,2)的截图,X为学号最后一位+3,至少四张截图
5 把代码推送到码云
二、代码实现:
class M{
int C(int n,int m){
if (m==n||m==0){
return 1;
}
else return C(n-1,m-1)+C(n-1,m);
}
}
public class Diedai {
public static void main(String[] args) {
int[] a = new int[args.length];
int n = 0;
int m = 0;
int result = 0;
M b = new M();
if (args.length == 2) {
for (int i = 0; i < args.length; i++) {
a[i] = Integer.parseInt(args[i]);
}
n= a[0];
m= a[1];
if(n<m){
System.out.println("输入数据错误!");
}
else {
result = b.C(n,m);
System.out.println("结果为:"+result);
}
}
else System.out.println("输入数据数量存在错误");
}
}
三、代码思路:
本题实现了一个对组合数求值的过程。在求值时,需要考虑数据的特殊性。关于组合数有如下规定:
C(n,0)=1 C(n,n)=1 C(0,0)=1
同时,n不可小于m,要手动控制当输入中n小于m的情况。
其次,m、n要求在命令行输入,可以将命令行传入的字符串存为数组,n取数组第一个值,m取第二个值来实现。
四、JDB调试: