首页 > 数据库技术 > 详细

迭代和JDB

时间:2019-03-29 21:59:15      阅读:166      评论:0      收藏:0      [点我收藏+]

20175227张雪莹 2018-2019-2 《Java程序设计》第五周学习总结

迭代和JDB

  • 要求
    • 使用C(n,m)=C(n-1,m-1)+C(n-1,m)公式进行递归编程实现求组合数C(m,n)的功能
    • m,n 要通过命令行传入
    • 提交测试运行截图(至少三张:正常如c(3,2)、异常如c(2, 3)、边界情况如c(m,m))
    • 提交正常情况下用JDB调试程序c(X,2)的截图,X为学号最后一位+3,至少四张截图
    • 把代码推送到码云
  • 程序为:
import java.util.Scanner;

class Suanfa{
    public int diedaiSuanfa(int n , int m) {
      if(n==0||n<m)
        return 0;
      else if(n==m||m==0)
        return 1;
     else if(m==1)
        return n;
      else
        return diedaiSuanfa(n-1, m-1)+diedaiSuanfa(n-1,m);
  }
}

public class Diedai {
public static void main(String args[]) {
Suanfa sum=new Suanfa();
System.out.print("请输入n,m(回车确认):");
Scanner reader=new Scanner(System.in);
int a=reader.nextInt();
int b=reader.nextInt();
System.out.println("C("+a+","+b+")="+sum.diedaiSuanfa(a,b));
}
}
  • 正常情况
    技术分享图片

  • 边界情况
    技术分享图片

  • 异常情况
    技术分享图片

  • JDB调试下,求C(10,2)
    技术分享图片

代码调试中的问题和解决过程

  • 问题1:编译课后时出现Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at Dieda问题
  • 问题1解决方案:是输入数据时发生数组越界的异常,之前用的是:
int [] a = new int [args.length];
for(int i=0; i<args.length;i++) {
a[i] = Integer.parseInt(args[i]);
}

更换了输入数据的形式后为:

Scanner reader=new Scanner(System.in);
int a=reader.nextInt();
int b=reader.nextInt();

顺利编译、运行

代码托管

迭代和JDB

原文:https://www.cnblogs.com/zxy20175227/p/10624120.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!