递归算法的使用:

简介: package algorithmimport java.io.Fileobject RecursiveApp { def main(args: Array[String]): Unit = { "...
package algorithm

import java.io.File


object RecursiveApp {

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

    """
      |递归的使用:适合于树形结构的遍历
      |比较递归方式和循环方式的区别
    """.stripMargin
    var s0 = System.currentTimeMillis()
    val res: Int = fabonacciNumber(30)
    println(res)
    println("recuise ops cost time "+(System.currentTimeMillis()-s0)/100+"s")

    var s1 = System.currentTimeMillis()
    println(fabonacci_ori(30))
    println("original ops cost time "+(System.currentTimeMillis()-s1)/100+"s")
    val path = "C:\\Users\\Administrator\\Desktop\\test\\NIFI"
    val file = new File(path)
    getFileList(file)
  }

  /**
    * 斐波那契数的递归实现
    * @param n
    * @return
    */
  def fabonacciNumber(n:Int):Int={

    if(n==1||n==2){
      return 1
    }else{
      fabonacciNumber(n-1) + fabonacciNumber(n-2)
    }
  }


  /**
    * 斐波那契数的循环实现
    * @param n
    * @return
    */
  def fabonacci_ori(n:Int):Int={
    var num1 = 1
    var num2 =1
    var fac = 0
    for(i <- 2 until(n)){
      fac = num1  + num2
      num1 = num2
      num2 = fac
    }
    fac
  }


  /**
    * 使用递归方式遍历某个文件名称信息
    * @param file
    */
  def getFileList(file:File){

    val files: Array[File] = file.listFiles()
    for(i <- 0 until(files.length)){
      if(files(i).isFile()){
        println(files(i).getName())
      }else{
        getFileList(files(i))
      }
    }
  }
}
相关文章
|
6月前
|
消息中间件 Java Kafka
Spring Boot整合kafka
本文简要记录了Spring Boot与Kafka的整合过程。首先通过Docker搭建Kafka环境,包括Zookeeper和Kafka服务的配置文件。接着引入Spring Kafka依赖,并在`application.properties`中配置生产者和消费者参数。随后创建Kafka配置类,定义Topic及重试机制。最后实现生产者发送消息和消费者监听消息的功能,支持手动ACK确认。此方案适用于快速构建基于Spring Boot的Kafka消息系统。
1175 7
|
安全 网络安全 定位技术
使用CDN服务对网页加载速度有何影响,如何选择合适的CDN提供商
使用CDN服务对网页加载速度有何影响,如何选择合适的CDN提供商
|
API
FFmpeg中AVPacket、AVFrame结构的基本使用
FFmpeg中AVPacket和AVFrame结构的内存分配、释放和引用计数处理,以及如何避免内存泄漏。
324 3
|
前端开发 Android开发 iOS开发
移动应用开发中的跨平台策略与系统选择
【8月更文挑战第29天】在移动应用领域,开发者面临多种操作系统和设备的选择。本文将探讨如何在移动应用开发中实施跨平台策略,并深入分析不同移动操作系统的特点及其对开发的影响。我们将通过比较iOS和Android两大主流平台,了解它们各自的优势和局限性,并提供实用的建议来帮助开发者做出明智的系统选择。
|
存储 Java Maven
阿里云云效操作报错合集之云效知识库上传附件报错,是什么原因
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
供应链 物联网 5G
新兴技术趋势与应用:区块链、物联网、虚拟现实的未来之路
当谈论新兴技术趋势与应用时,我们不得不关注区块链、物联网和虚拟现实等领域。本文将探讨这些新兴技术的发展趋势和应用场景,从而揭示它们在未来的潜力和影响。
|
SQL Shell 数据库
21、sqlmap参数详解
21、sqlmap参数详解
230 0
|
JavaScript 容器
Vue中实现路由跳转的三种方式详细分解
Vue中实现路由跳转的三种方式详细分解
398 0
|
网络协议
Qt Tcp Server
Qt Tcp Server
90 0