Scala中递归函数

1.递归函数定义:自己调用自己的函数就是递归函数,需要自己修改数据类型

(1)基本情况,是直接能求的。

(2)递归情况,是大事化小,自己调用自己

2.递归函数应用场景:适用于解决可以被分解为子问题的问题,大事化小

3.所求问题用递归函数的解决方法,代码如下:

object TestFucR {
  //1.函数可以调用自己 --->递归函数
  //2.函数自己调用自己,可能会导致死循环
    def fn():Unit ={
      print("fn")
      //在函数内部再次调用自己
     fn()
    }

    //求1*2*3*....*(n-1)*n
    def getMul(n:Int): Int ={
     if(n == 1) {
       1
      }else{
        getMul(n-1)*n
      }
      }
    def main(args: Array[String]): Unit = {
      println(getMul(3))
    }
  //求斐波拉契数列的第n项
  //记:0 1 1 2 3 5 8 13 21 34....从第3项开始 f(n)=f(n-1)+f(n-2)
  //1.基本情况(直接能求的):f(0)=0,f(1)=1
  //2.递归情况:f(n)=f(n-1)+f(n-2)
    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(5))
    }
def main(args: Array[String]): Unit = {
    val a = sum1(4, 5)
    println(s"a=$a")
    val a2 = sum2(4, 5)
    println(s"a2=$a2")
    println(s"gcd=${gcd(0, 4)}")
  }

  //1.
  def sum1(x: Int, y: Int): Int = {
    return x + y
  }

  def sum2(x: Int, y: Int): Int = return x + y

  //2.
  def gcd(x: Int, y: Int): Int = {
    if(x==0) y
    else gcd(y%x,x)
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值