package Test3
//递归函数
/**问题:求 汉罗塔游戏的步骤
* 记:f(n,"A","B","C")标志把n个盘子从A柱子上移动到C柱子上,借用B柱子上的过程
* f(要移动的盘子的个数,自己调用自己)
*/
/**
* 应用场景:适用于解决可以被分解为子问题的问题,大事化小
* 问题:求1+2....的和
* 记:f(n)=1+2+3+4+....
*/
object TestFucR {
//1.函数可以自己调用---->
//2.自己调用自己,可能会导致死循环
def fn():Unit= {
println("fn")
//在函数内部再次调用自己
fn()
}
/**
* 问题:求1+2...的和。
* 记:f(n)=1+2+3+4+...+(n-1)+n
* 1.基本情况(直接能求的):f(1)=1
* 2.递归情况(大事化小)
* @param n
* @return
*/
def getSum(n:Int):Int={
if (n==1) {
1
}else{
getSum(n-1)*n
}
}
def fib(n:Int):Int={
if(n==0){
0
}else if (n==1){
1
}else{
fib(n-1)+fib(n-2)
}
}
def main(args: Array[String]): Unit = {
println(fib(6))
}
def getMul(n: Int): Int = {
if (n == 1) {
1
} else {
getMul(n - 1) * n
}
}
def f(n:Int,A:String,B:String,C:String):Unit={
if(n==1){
println(s"$A ----> $C")
}else{
f(n-1,A, B, C)
println(s"$A ---> $C")
f(n-1,B,A,C)
}
}
}
scala递归函数//汉罗塔游戏
最新推荐文章于 2024-10-30 18:07:32 发布