内容:
1. 函数参数的默认值;
2. 函数的变参;
3. 无参函数;
4. 递归函数。
函数参数的默认值
1. 定义有默认值的函数
格式:
def 函数名(参数1:类型1=默认值1,参数2:类型2=默认值2)
scala
体验AI代码助手
代码解读
复制代码
object def04 {
// gender:
def greet(name:String="小花", age:Int=18, gender:String="女"):Unit = {
println(s"我是${name},我今天${age},${gender}")
}
def main(args: Array[String]): Unit = {
greet("小花",18)//默认值
greet("小米",20,"男")
greet()
}
}
1,创建不带()的方法
如果函数没有参数,可以省略定义函数时的( )
格式:def 方法名:返回类型={}。
scala
体验AI代码助手
代码解读
复制代码
def greet: Unit = {
println("hello")
}
greet // 不用加()
2,创建接受变参的方法
如何定义一个函数,它能接收数量不定的参数,并计算它们的累加?例如:getSum(1,2,3) 得到6, getSum(1,2,3,4) 得到10?
【分析】我们需要一个统一的容器,把参数都装起来
scala
体验AI代码助手
代码解读
复制代码
object def05 {
// 传入不同的数量的参数
// 第一个参数是学生的名字,从第二个参数开始,是这个学生的某些个学科的得分
// 变参:允许传入不同的数,但是类型相同的参数
// Int*
// array 数组
def greet(name: String,score:Int*): Unit = {
//score 是一个列表
var total: Double = 0
for (i <- score) {
total += i
}
val avg = total / score.length
println(s"${name},平均分为:${avg}")
}
def main(args: Array[String]): Unit = {
greet("小花",90,100,98,100,80)
greet("小米",80,88)
greet("小猪",90)
}
}
递归函数
递归是一种常用的解决问题的方法,特别适用于解决可以被分解为类似子问题的问题。递归函数通常由两个主要部分组成:起始条件(或基线条件)和递归规则(或递归关系)。
起始条件:一个递归的终止条件,确保递归不会无限进行。它处理最简单的情况并返回结果.
递归规则:在这个部分,函数会调用自身,以解决一个更小的子问题。
1,计算累加
计算一个整数的累加是一个经典的递归问题。假设我们要计算 n 的累加和,记作 f(n) = 1 + 2 + 3 + ... + n ,其定义为:
scala
体验AI代码助手
代码解读
复制代码
object def06 {
//适合解决一类问题:
// 可以把大问题。拆分成同类的小问题
// 当问题足够小的时候,可以直接求解
//f(n) = 1+2+3+4+...+n
//f(100)=1+2+3+4+...+99+100
def sum(n:Int): Int = {
if(n == 1){
1
}else{
sum(n-1) + n
}
}
def main(args: Array[String]): Unit = {
val s = sum(100)
println(s)
}
}
2,整数的阶乘
计算一个整数的阶乘是一个经典的递归问题。假设我们要计算 n 的阶乘,记作 n!=123*4...*n,其定义为:
起始条件:0! = 1
递归规则:n! = n * (n-1)!
scala
体验AI代码助手
代码解读
复制代码
object def07 {
// 求阶乘
// f(n) = 1*2*3*4*5...*n
def f(n:Int):Int = {
if(n == 0){
1
}else{
n * f(n-1)
}
}
def main(args: Array[String]): Unit = {
val s = f(4)
println(s)
}
}