当前位置:网站首页>Scala语言学习-05-递归和尾递归效率对比

Scala语言学习-05-递归和尾递归效率对比

2022-06-22 14:28:00 阳光九叶草LXGZXJ

一、测试环境

名称版本
操作系统win10
CPU12th Gen Intel Core i7-12700H
内存16G
JDK1.8.0_171
Scala3.1.2

二、代码

import java.util.Date

object TestRecursion {
    
    def main(args: Array[String]): Unit = {
    
        val TempNum: Long = 12L
        ComputeProcedureTime(Factorial, TempNum,"递归:")
        ComputeProcedureTime(TailFactorial, TempNum,"尾递归:")
    }
    
    def ComputeProcedureTime(Func :Long => Long, Param: Long, Info: String): Unit = {
    
        println("++++++++++++++++++++++++++++")
        println(Info)
        var start_time =new Date().getTime
        println(Func(Param))
        var end_time =new Date().getTime
        println(s"Elapsed Time : ${
      end_time-start_time} ms")
    }
    
    def Factorial(Num: Long): Long = {
    
        if (Num == 1){
    
            Num
        }
        else {
    
            Num * Factorial(Num - 1)
        }
    }
    
    def TailFactorial(Num: Long): Long = {
    
        def Loop(Num: Long,Res: Long): Long = {
    
            if(Num == 1){
    
                Res
            }
            else{
    
                Loop(Num - 1, Res * Num)
            }
        }
        Loop(Num, 1)
    }
}


三、运行结果

++++++++++++++++++++++++++++
递归:
479001600
Elapsed Time : 1 ms
++++++++++++++++++++++++++++
尾递归:
479001600
Elapsed Time : 0 ms

在这里插入图片描述

Idea会把递归和尾递归分别标识出来,点个赞

原网站

版权声明
本文为[阳光九叶草LXGZXJ]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_45111959/article/details/125377204