7.控制函数+递归

控制函数+递归

递归

// 递归在函数是函数式编程中最常见的算法,其包含三个主要成分
// 1. 函数调用自身
// 2. 函数有跳出递归的逻辑
// 3. 递归调用时应有规律


// 递归的一般写法
    def test(num : Int) : Int = {
        if ( num == 1) {
            1
        }else{
            num * test(num - 1)
        }


    }


// 但是在scala中,一般的算法采用尾递归的方式实现,尚需继续理解
//尾递归,比线性递归多一个参数,这个参数是上一次调用函数得到的结果;
     def test1(num : Int,r : Int) : Unit = {
            if(num==1){
                r
            }else{
                test1(num-1,  num * r)
            }

        }


    }

控制函数

名调用

package cn.lpc.Cheapter05

import scala.util.control.Breaks

object Scala_f7Abstract {
    def main(args: Array[String]): Unit = {
        // 将代码作为参数传递给函数
        /*
         def f = () =>{
            println("f....")
            10
        }
         */
         // 匿名函数
        def f = () =>{
            println("f....")
            10
        }



       def test( op : => Unit)={
            op
       }

        test{
            println("123")
            println("adsdas")
        }


        Array(1,23,4).foreach(println)

        // 函数柯里化
        // 第一个参数(f1 : =>Boolean),第二个参数(op : => Unit)
        // 自定义while语句
        @scala.annotation.tailrec
        def whilex(f1 : =>Boolean)(op : => Unit) : Unit={
            if (f1){
                op
                whilex(f1)(op)
            }else{

            }
        }
        whilex(true){
            println("xxx")
        
    }
}

惰性函数

当函数返回值声明为lazy时,函数的执行将被延迟,直到我们首次对此取值,该函数才会被执行,

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

    lazy val res = sum(10, 30)
    println("----------------")
    println("res=" + res)
}

def sum(n1: Int, n2: Int): Int = {
    println("sum被执行。。。")
    return n1 + n2
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值