Scala尾递归-第七章

1)代码示例
object TestRecursion {
    def main(args: Array[String]): Unit = {
        var data = 1 to 10
        println(sum1(data))
        println(sum2(data,0))
    }

    // 普通递归
    def sum1(args:Seq[Int]):Int ={
        if (args.isEmpty)
             0
        else {
            args.head + sum1(args.tail)
        }
    }

    // 尾递归
    def sum2(args:Seq[Int],sums:Int):Int ={
        if (args.isEmpty)
            sums
        else {
            sum2(args.tail,sums + args.head)
        }
    }
}

计算结果
在这里插入图片描述

说明:
普通递归尾部可以参与计算,但是每次递归都需要执行压栈,这样会造成栈溢出
尾递归尾部不参与计算,只做函数调用,同时调用的值是算的结果,不会造成栈溢出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值