zoukankan      html  css  js  c++  java
  • scala实战学习-尾递归函数


    $$
    Sigmasideset{^b_a}f(x)
    $$

    object sumfunc{
        def sum(f: Int => Int)(a: Int)(b:Int): Int = {
            @annotation.tailrec
            def loop(n: Int,acc: Int): Int = {
                if(n > b){
                    println(s"n=${n},acc=${acc}")
                    acc     //当计算到b值,返回acc值
                }else{
                    println(s"n=${n},acc=${acc}")
                    loop(n + 1, acc + f(n))
                }
            }
            loop(a, 0)      //n从a开始,acc从0开始
        }
        sum(x => x)(1)(5)   //将f(X)、a、b传到sum函数中
                                                      //> n=1,acc=0
                                                      //| n=2,acc=1
                                                      //| n=3,acc=3
                                                      //| n=4,acc=6
                                                      //| n=5,acc=10
                                                      //| n=6,acc=15
                                                      //| res0: Int = 15
        sum(x => x * x)(1)(5)                         //> n=1,acc=0
                                                      //| n=2,acc=1
                                                      //| n=3,acc=5
                                                      //| n=4,acc=14
                                                      //| n=5,acc=30
                                                      //| n=6,acc=55
                                                      //| res1: Int = 55
        val sumSquare=sum(x => x*x)_                   //> sumSquare  : Int => (Int => Int) = <function1>
        sumSquare(1)(5)                                //> n=1,acc=0
                                                      //| n=2,acc=1
                                                      //| n=3,acc=5
                                                      //| n=4,acc=14
                                                      //| n=5,acc=30
                                                      //| n=6,acc=55
                                                      //| res3: Int = 55
    
  • 相关阅读:
    csu 1965
    csu 1947 三分
    Codeforces 336C 0-1背包
    POJ 1743 后缀数组
    POJ 2774 后缀数组
    UVA 12333 大数,字典树
    POJ 2942 圆桌骑士
    POJ 1503 大整数
    POJ 2342 树的最大独立集
    POJ 3088 斯特林
  • 原文地址:https://www.cnblogs.com/fengzzi/p/10040651.html
Copyright © 2011-2022 走看看