1.可以被分解为类似子问题
2.当分解到足够小的时候,问题
object Base45 {
def f(n:Int): Int = {
if(n == 1)
1
else
f(n-1) + n
}
def main(args: Array[String]): Unit = {
val rst = f(100)
println(rst)
}
}
object Base46 {
def f(n:Int):Int = {
if(n == 1) {
1
}else{
f(n-1) + n
}
}
def main(args: Array[String]): Unit = {
val rst = f(4)
println(rst)
}
}
2到6行:修改代码完成阶乘的功能
用斐波那契数列求f(10)
object Base47 {
def f(n:Int):Int = {
if(n == 1) {
1
}else if(n == 2){
2
}else {
f(n-1) + f(n-2)
}
}
def main(args: Array[String]): Unit = {
val rst = f(10)
println(rst)
}
}
把输入的整数的各个位数上的数值输出来!
object Base48 {
def f(n:Int):Unit = {
if(n<9){
println(n)
} else {
f(n/10)
println(n%10)
}
}
def main(args: Array[String]): Unit = {
f(12345)
}
}
汉诺塔游戏
object Base49 {
def f(n: Int, A: Char, B: Char, C: Char): Unit = {
if (n == 1) {
println(s"${A} ---> ${C}")
} else {
f(n - 1, A, C, B)
println(s"${A} ---> ${C}")
f(n - 1, B, A, C)
}
}
def main(args: Array[String]): Unit = {
f(4, 'A', 'B', 'C')
}
}