zoukankan      html  css  js  c++  java
  • 学号 20175212童皓桢 第五周迭代选做题学习

    学号 20175212童皓桢 第五周迭代选做题学习

    题目要求

    1 使用C(n,m)=C(n-1,m-1)+C(n-1,m)公式进行递归编程实现求组合数C(m,n)的功能

    2 m,n 要通过命令行传入

    3.正常情况下用JDB调试程序c(X,2),X为学号最后一位+3

    代码

    import java.util.Scanner;
    
    class ZuHeShu{
        int zuheshu (int n,int m){
            if(m==1) return n;
            else if(m==0) return 1;
            else if(m==n) return 1;
            else if (n>m&&m>1&&n>1) return zuheshu(n-1,m-1)+zuheshu(n-1,m);
            else      return -1;
        }
    }
    
    public class diedai {
        public static void main(String[] args) {
            Scanner reader = new Scanner (System.in);
            System.out.println("输入m:");
            int m=reader.nextInt();
    
            System.out.println("输入n:");
            int n=reader.nextInt();
    
            ZuHeShu a =new ZuHeShu();
    
            if(a.zuheshu(n,m)==-1)
                System.out.println("输入数据有误");
    
            else
                System.out.println("C(n,m)="+a.zuheshu(n,m));
        }
    }
    
    

    测试运行截图

    1.正常情况

    输入图片说明

    2.异常情况

    输入图片说明

    3.边界情况

    输入图片说明

    代码调试

    1.使用JDB调试,并将断点设置至main处,如下图:
    输入图片说明

    2.使用step指令使代码运行至需要输入数据处
    输入图片说明

    发现调试出现错误,并提示找不到源文件。鉴于JDB没有设置条件断点功能,因此换IDEA进行调试

    3.根据题目要求,在IDEA中调试,学号尾数为2,故X=5
    输入图片说明

    练习中遇到的问题

    • 问题一:未经调试地程序在输入数据运行时,总出现结果为负数地情况

    • 解决办法一:经过多次尝试和规律探寻,发现问题地关键在于:由于编程实现组合数是通过迭代算法,组合数在m=1,m=n,m=0等这些 基底情况 时需要用if语句单独讨论。

    • 问题二:使用JDB进行调试时,step到输入语句时,自动跳出程序并出错

    • 解决办法二:使用IDEA进行调试并可以使用条件断点作为帮助。

    感悟体会

    • 迭代法是一个十分好用并且编写风格简介的算法,但是需要注意具体问题中的特殊的 基底情况 ,类似于数学归纳法中n=1,2时的情况需要重点关注。
  • 相关阅读:
    nessus 安装
    firefox SSL_ERROR_RX_RECORD_TOO_LONG burpsuit 报错 解决方案
    Vmware 15 新建虚拟机黑屏
    esp8266 IOT Demo 固件刷写记录
    elk + suricata 实验环境详细安装教程
    停更申明
    求二叉树的深度
    方差
    链表的基本排序
    正态分布及3Sigma原理
  • 原文地址:https://www.cnblogs.com/thz666/p/10627267.html
Copyright © 2011-2022 走看看