课后作业1
一、动手动脑问题
- 随机数生成:按指定算法(Modulus=2³¹-1、Multiplier=16807、C=0,公式$x_{n+1}=(a x_n + c) \mod m$),初始化Seed后循环生成1000个随机整数,注意数据类型避免溢出。
- 方法重载:分析MethodOverload类,其含两个square方法(参数int/double),体现“方法名同、参数不同”的重载特性;JDK中System.out.println()也有多类重载,适配不同数据类型输出。
- 递归应用:以n!为例,递归公式$ f(n)=n\times f(n-1)$,结束条件n=1/0时返回1;对比递推(循环从1算至n),递归逻辑简洁但可能栈溢出,递推效率高无溢出风险,按需选择。
二、课后实验性问题 - 大数字处理:CalculateN程序中int/long类型存阶乘易溢出,改用BigInteger类,通过其multiply方法递归计算n!,解决大整数运算问题。
- 浮点数比较:double类型存浮点数有精度误差,直接用“==”可能误判,需比较两数差值绝对值是否小于1e-10等极小值来判断相等。
- 四则运算程序:
- 阶段1:用随机数生成2个运算数和1个运算符(除法保证整除、减法保证非负),循环生成30题。
- 阶段2:用集合存题目防重复,按规则限制运算(乘法结果<1000等);写答题方法判对错、统计正确率;用线程实现倒计时,超时未答算错题。

浙公网安备 33010602011771号