Scala学习-3.2递归函数

递归函数

/**
学习如何编写scala的递归函数
知识点
1.scala递归函数的返回值类型必须显示声明
2.编写递归函数掌握两要素:①找出项与项之间的函数关系  ②找出结束条件
3.scala递归函数,结束条件的返回值,必须用return返回
*/
object Demo {
  println("Welcome to the Scala worksheet")       //> Welcome to the Scala worksheet
  
  //给定一个斐波那契数列:2 3 5 8 13 21 ...
  //编写一个递归函数 ,def f1(n:Int)={} 通过此递归函数,判断第n项的数字是多少
  //函数关系:f(n)=f(n-1)+f(n-2)
  //结束条件:f(0)=2  f(1)=3
  
  def f1(n:Int):Int={
      if(n==0) return 2
      if(n==1) return 3
      else f1(n-1)+f1(n-2)
  }                                               //> f1: (n: Int)Int
  
  f1(6)                                           //> res0: Int = 34
  
  //练习1:给定一个数列:2 3 4 9 16 81 ...
  //编写一个递归函数 ,def f2(n:Int)={} 通过此递归函数,判断第n项的数字是多少
  //函数关系:f(n)=f(n-2)*f(n-2)
  //结束条件:f(0)=2 f(1)=3
  
  def f2(n:Int):Int={
      if(n==0) return 2
      if(n==1) return 3
      else f2(n-2)*f2(n-2)
  }                                               //> f2: (n: Int)Int
  
  f2(7)                                           //> res1: Int = 6561
  
  
  //练习2:给定一个数列:2 3 4 9 8 27 16 81 ...
  //编写一个递归函数 ,def f3(n:Int)={} 通过此递归函数,判断第n项的数字是多少
  //函数关系:n是偶数项   f(n)=2*f(n-2)  n是奇数项  f(n)=3*f(n-2)
  //结束条件:f(0)=2 f(1)=3
  
  def f3(n:Int):Int={
      if(n==0)return 2
      if(n==1)return 3
      if(n%2==0)2*f3(n-2)
      else 3*f3(n-2)
  }                                               //> f3: (n: Int)Int
  
  f3(9)                                           //> res2: Int = 243
  
  
  def mi(x:Int,n:Int):Double={
      if(n==0) return 1
      else if(n>0&&n%2==0) mi(x,n/2)*mi(x,n/2)
      else if(n>0&&n%2==1) mi(x,n-1)*x
      else 1/mi(x,-n)
  }                                               //> mi: (x: Int, n: Int)Double
  
  mi(2,10)                                        //> res3: Double = 1024.0
  mi(2,7)                                         //> res4: Double = 128.0
  mi(2,0)                                         //> res5: Double = 1.0
  mi(2,-1)                                        //> res6: Double = 0.5
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容