可变参数与递归
可变参数
上章说到方法重载,对于不同数量(输入的参数类型不一致会报错)的参数我们可以通过方法重载的方式来解决,如果参数数量具有很强的不确定性,我们不可能写n个方法来一个一个定义,因此可变参数诞生了
在方法声明中在指定参数类型后加一个省略号(...)如:int...i
但是要注意的是一个方法只能有一个可变参数,而且必须是最后一个参数,任何普通参数必须在它之前声明
该节就是数组的衔接
i[]括号中的内容就是调用第几位,但要注意0也算一位
以上为输出最大值的方法,上面有一个坑,数组中第0项是第一项,但数组总共有几项还是几项所以,for循环中的i会被循环到小于数组总项大小-1的项,故不用等于号
递归
递归部分
- 递归头:什么时候不调用自身方法。如果没有头将陷入死循环
- 递归体:什么时候需要调用自身方法
如上图所示,递归和高中函数套函数很相似,自己引用自己来简化题目,上述为阶乘
备注:通常要给f1留一个初始的值,否则整个函数只有未知数无法运算
上图递归头为f1使之不会死循环
栈机制,由于不断的调用,会产生不必要的时间和开销,会很卡,递归深度不能太大,因此能不用就不用,使用前提他的基数必须比较小
作业
写计算器
试了很多遍一直不成功,关键在于使用scanner.nextInt的时候它不会读取换行符,导致换行符被留在缓冲区,被下一次的String读取
让String的输入一直为空,故要使用scanner.nextLine来清空缓存区
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现