递归函数:在函数中再次调用自己
注意:容易产生死循环
适用于解决:能把大问题,拆分为小问题的问题。
1.求1+2+3+...+n-1+n 记为f(n),表示1-n的和。
f(n)=1+2+3+...+n-1+n。
(1)基本情况。可以直接求解,避免死循环。f(1)=1。
(2)递归情况。大事化小,递归求解。f(n)=f(n-1)+n。
//getSum(n)计算1-n的和
def getSum(n:Int):Int={
if (n==1) {
1
}else{
getSum(n-1)+n
}
}
def main(args: Array[String]): Unit = {
var s=getSum(3)//6
println(s)//6
}
}
2.求1*2*3*...*(n-1)*n 记为f(n),表示1-n的和。
f(n)=1*2*3*...*(n-1)*n
(1)基本情况。可以直接求解,避免死循环。f(1)=1
(2)递归情况。大事化小,递归求解。f(n)=f(n-1)*n
//getMul(n)计算1-n的和
def getMul(n:Int):Int={
if (n==1){
1
}else{
getMul(n - 1)*n
}
}
def main(args: Array[String]): Unit = {
var s = getMul(4) //1*2*3*4=24
println(s)//24
}
}