0

0

递归函数中全局计数器的实现:统计MP3文件数量

心靈之曲

心靈之曲

发布时间:2025-09-20 11:13:43

|

847人浏览过

|

来源于php中文网

原创

递归函数中全局计数器的实现:统计mp3文件数量

递归函数中实现全局计数,关键在于如何将每次递归调用的结果传递到顶层调用。以下代码示例展示了如何通过修改递归函数的返回值类型,并累加每次递归调用的结果,来统计指定目录下所有子目录中的 .mp3 文件数量。

public class MP3Counter {

    public static void main(String[] args) {
        int count = extract("../");
        System.out.println("Total MP3 files: " + count);
    }

    public static int extract(String p) {
        File f = new File(p);
        File[] l = f.listFiles();
        int counter = 0;
        if (l != null) { // 增加空指针判断
            for (File x : l) {
                if (x.isDirectory()) {
                    counter += extract(x.getPath());
                } else if (x.getName().endsWith(".mp3")) {
                    counter++;
                }
            }
        }
        return counter;
    }
}

代码解析:

  1. 返回值类型: extract 函数的返回值类型从 void 修改为 int,用于返回当前目录及其子目录中 .mp3 文件的数量。

  2. 递归调用累加: 在 extract 函数中,如果遇到子目录,则递归调用 extract 函数,并将返回的计数结果累加到 counter 变量中:counter += extract(x.getPath());。

  3. 计数递增: 如果遇到 .mp3 文件,则将 counter 变量递增:counter++;。

  4. 返回计数: 函数最后返回 counter 变量的值,即当前目录及其子目录中 .mp3 文件的总数量。

    TURF(开源)权限管理系统
    TURF(开源)权限管理系统

    TURF(开源)权限定制管理系统(以下简称“TURF系统”),是蓝水工作室推出的一套基于软件边界设计理念研发的具有可定制性的权限管理系统。TURF系统充分考虑了易用性,将配置、设定等操作进行了图形化设计,完全在web界面实现,程序员只需在所要控制的程序中简单调用一个函数,即可实现严格的程序权限管控,管控力度除可达到文件级别外,还可达到代码级别,即可精确控制到

    下载
  5. 空指针判断: 增加 if (l != null) 判断,避免在 listFiles() 方法返回 null 时出现 NullPointerException。

注意事项:

  • 确保传入 extract 函数的路径是有效的目录路径。
  • 递归深度过深可能导致溢出,需要根据实际情况进行优化,例如使用迭代方式替代递归。
  • 在处理大量文件时,可以考虑使用多线程来提高效率。

总结:

通过修改递归函数的返回值类型,并在每次递归调用时累加返回值,可以有效地实现全局计数。这种方法适用于需要在递归过程中统计数量或进行其他聚合操作的场景。在实际应用中,需要注意处理异常情况,并根据性能需求进行优化。

相关专题

更多
c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

231

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

435

2024.03.01

if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

737

2023.08.22

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

315

2023.08.02

int占多少字节
int占多少字节

int占4个字节,意味着一个int变量可以存储范围在-2,147,483,648到2,147,483,647之间的整数值,在某些情况下也可能是2个字节或8个字节,int是一种常用的数据类型,用于表示整数,需要根据具体情况选择合适的数据类型,以确保程序的正确性和性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

537

2024.08.29

c++怎么把double转成int
c++怎么把double转成int

本专题整合了 c++ double相关教程,阅读专题下面的文章了解更多详细内容。

52

2025.08.29

C++中int的含义
C++中int的含义

本专题整合了C++中int相关内容,阅读专题下面的文章了解更多详细内容。

197

2025.08.29

javascriptvoid(o)怎么解决
javascriptvoid(o)怎么解决

javascriptvoid(o)的解决办法:1、检查语法错误;2、确保正确的执行环境;3、检查其他代码的冲突;4、使用事件委托;5、使用其他绑定方式;6、检查外部资源等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

175

2023.11.23

Java 桌面应用开发(JavaFX 实战)
Java 桌面应用开发(JavaFX 实战)

本专题系统讲解 Java 在桌面应用开发领域的实战应用,重点围绕 JavaFX 框架,涵盖界面布局、控件使用、事件处理、FXML、样式美化(CSS)、多线程与UI响应优化,以及桌面应用的打包与发布。通过完整示例项目,帮助学习者掌握 使用 Java 构建现代化、跨平台桌面应用程序的核心能力。

36

2026.01.14

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
国外Web开发全栈课程全集
国外Web开发全栈课程全集

共12课时 | 1.0万人学习

进程与SOCKET
进程与SOCKET

共6课时 | 0.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号