zoukankan      html  css  js  c++  java
  • 迭代和JDB

    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();
    

    顺利编译、运行

    代码托管

  • 相关阅读:
    Codeforces Round #665 (Div. 2) C. Mere Array 数论,思维
    Codeforces Round #665 (Div. 2) B
    ZOJ
    HDU-2158 最短区间版大家来找茬 模拟 尺取
    HDU-1082 排列组合 普通生成函数 细节
    HDU
    poj-1651 multiplication puzzle(区间dp)
    hdu-1231 连续最大子序列(动态规划)
    poj-2488 a knight's journey(搜索题)
    hdu-2063 过山车(二分图)
  • 原文地址:https://www.cnblogs.com/zxy20175227/p/10624120.html
Copyright © 2011-2022 走看看