Scala递进函数

/**递归函数,在函数内部再次调用自己
 * 解决可以被分解为类例子问题的问题
 * 组成
 * 1基本情况,最小问题的答案
 * 2.递进情况,调用自己去解决问题
 */
object TestFuRecursive {
  //  def fn():Unit={
  //    println("fn...")
  //    fn()
  //  }
  //  //定义一个函数,求1—n的和
  //  def sum(n:Int)={
  //    var s=0
  //    for (i<-1 to n){
  //      s+=1
  //    }
  //    s
  //  }
//  def sum(n: Int): Int = {
    println(n)
    //基本情况
    if (n == 1) {
      1
    }
    else{
     //2递归情况,再次要用自己去解决问题
  return n + sum(n - 1)
//    }
//}
//  def main(args: Array[String]): Unit = {
    var s=sum(10)
    println(s)
  }
}
//定义一个函数,求1*2*3*...*n
 def mul(n:Int):Int={
  if(n ==0){
    1
  }else{
    mul(n-1)*n
  }
}
 def main(array: Array[String]):Unit={
   var s=mul(5)//5*4*3*2*1=120
   println(s)
 }
 //定义一个函数,计算菲皮那契数列的第n项
//费皮那契数列{:1 1 2 3 5 8 13 21...
//规律:
//1.基本情况 f(0)=1;f(1)=1
//2 ,递进情况 f(n)=f(n-1)+f(n-2)
  def feb(n:Int):Unit={

  //1.基本情况
  if(n == 0)
    0
    else if (n == 1)
    1
    else
      feb(n-1)+feb(n-2)
}
def main(array: Array[String]):Unit={
  var s=feb(5)//
  println(s)
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值