递归理解和demo

递归即程序调用自身,注意一定有一种可以退出程序的情况;

例子:遍历获取目录下的所有子目录和文件

1)使用python实现

"""
@author :Eric-chen
@contact :sygcrjgx@163.com
@time :2017/5/07 11:08
@desc :递归小例子,查看当前目录下所有的子目录和文件
"""
import os
from time import time

dir_count = 0
file_count = 0


def get_all_dir(path):
    # 得到当前目录下所有的文件
    fills_list = os.listdir(path)

    # 处理每一个文件
    for file_name in fills_list:
        # 判断是否是路径(用绝对路径)
        file_abs_path = os.path.join(path, file_name)
        if os.path.isdir(file_abs_path):
            global dir_count  # 写了这个global,不知道会不会被开除
            dir_count += 1
            print(path + '\' + file_name)
            get_all_dir(file_abs_path)
        else:
            global file_count
            file_count += 1
            print(path + '\' + file_name)


def main():
    user_dir = r"D:桌面"
    t1 = time()
    get_all_dir(user_dir)
    t2 = time()
    print("一共有%d个目录,%d个文件,耗时%.3f秒" % (dir_count, file_count, t2 - t1))


if __name__ == "__main__":
    main()

 

2)使用java实现

package method;

import java.io.File;


public class test {
    public static void main(String[] args) {
        String path = "D:\桌面";
        File file = new File(path);
        listAllFiles(file);
    }

    private static void listAllFiles(File file) {
        if (file.isDirectory()) {
            File[] files = file.listFiles();
            for (int i = 0; i < files.length; i++) {
                if (files[i].isDirectory()) {
                    listAllFiles(files[i]);
                    System.out.println(files[i].getAbsoluteFile());
                } else {
                    System.out.println(files[i].getAbsolutePath());
                }
            }
        }else {
            System.out.println(file.getAbsolutePath());
        }
    }

}

  

 

原文地址:https://www.cnblogs.com/jycjy/p/6821105.html