scala递归求斐波那契数列

object RecursiveFnb {
    
    
  def main(args: Array[String]): Unit = {
    
    

    var count = BigInt(0)
    //1 1 2 3  5 ?
    println(fbn(30))
    println("递归的次数是=" + count)


    // 研究下递归求斐波那契数的熟的递归次数增长情况
    // 递归的次数是呈现只是增长
    def fbn(n: BigInt): BigInt = {
    
    
      count += 1
      if (n == 1 || n == 2) 1
      else fbn(n - 1) + fbn(n - 2)
    }
  }
}

在进行了重复计算时,大家就需要考虑优化问题
优化的原则时时变递归为迭代
object RecursiveFnb {
    
    
  def main(args: Array[String]): Unit = {
    
    

    var count = BigInt(0)
    //1 1 2 3  5 ?
    println(fbn(30))
    println("递归的次数是=" + count)


    // 研究下递归求斐波那契数的熟的递归次数增长情况
    // 递归的次数是呈现只是增长
    def fbn(n: BigInt): BigInt = {
    
    
      count += 1
      if (n == 1 || n == 2) 1
      else 9 + fbn(n - 2)
    }
  }
}

数值分析对算法时间复杂度进行优化

猜你喜欢

转载自blog.csdn.net/qq_44104303/article/details/114869424