1.递归函数的实训
案例一:计算累加
object dsj01 {
/**
*
*
*
* f(1) = 1
* f(2) = 2
*
* f(n) = f(n-1) + f(n-2)
*/
def f(n:Int):Int = {
//
if(n == 1){
1
} else if(n == 2){
2
} else{
7
}
}
def main(args: Array[String]): Unit = {
val rst = f(5) //8
println(rst)
}
}
案例二:求a的n次方
object dsj02 {
/**
*求a的n次方 a*a*a.....*a(n-1)
*
*
* f(a,0) = 1
*
* f(a,n) = a*f(a,n-1)
*
*/
def f(a:Int, n:Int):Int = {
//
if(n == 0){
1
} else {
a*f(a,n-1)
}
}
def main(args: Array[String]): Unit = {
val rst = f(2,3) //8
println(rst)
}
}
起始条件:一个递归的终止条件,确保递归不会无限进行。它处理最简单的情况并返回结果.
递归规则:在这个部分,函数会调用自身,以解决一个更小的子问题。
基本结构
def gcd(a: Int, b: Int): Int = {
if (b == 0)
a
else
gcd(b, a % b)
}
def main(args: Array[String]): Unit = {
val num1 = 56
val num2 = 98