scala 递归函数(二)

39 阅读1分钟

斐波那契数列

1.斐波那契数列的定义是:

2.起始条件:f(0) = 0 , f(1) = 1

3.递归规则:f(n) = f(n-1) + f(n-2)(当 n ≥ 2)。求它的第n项。

4.求斐波那契数列数据的第n项

object base34 {
  /**
   *求斐波那契数列数据的第n项
   *
   * f(1)=1
   * f(2)=2
   *
   * f(n)=f(n-1)+f(n-2)
   * @param args
   */

        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(5)//8
          println(rst)




      }
    }

4.求a的n次方。

object base35 {
  /**
   *求a的n次方。a*a*a......*a(n个)
   *f(a,0)=1
   *
   * f(a,n)=a*f(a,n-1)
   * @param args
   */

        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)




      }
    }

5.汉诺塔 递归

object base36 {
  var i = 1;
  def hanoi(n: Int, A: String, C: String, B: String): Unit = {
    if (n == 1) {
      println(s"$i, move 1 from $A -> $C")
      i += 1
    } else {
      hanoi(n - 1, A, B, C)
      println(s"$i, move $n from $A -> $C")
      i += 1
      hanoi(n - 1, B, C, A)
    }
  }
  def main(args: Array[String]): Unit = {
    // 4 个盘子 从A移动到C,借助B
    hanoi(4, "A", "C", "B")
  }
}