shley

递归概念

递归概述

以编程的角度来看,递归指的是方法定义中调用方法本身的现象

递归解决问题的思路

  • 把一个复杂的问题层层转化成为一个与原问题相似的规模较小的问题来求解
  • 递归策略只需少量的程序就可以描述出解题过程所需要的多次重复计算

递归解决问题需要找到两个内容

  • 递归出口:否则会出现内存溢出
  • 递归规则:与原问题相似的规模较小的问题

递归的程序实现

Java递归实现斐波那契数列

斐波那契数列是什么?https://baike.baidu.com/item/斐波那契数列/99145?fr=aladdin

public class Fibonacci {

    public static void main(String[] args) {
        // 输出第20个数
        System.out.println(f(20));
    }

    public static int f(int n) {
        // 递归出口
        if (n == 1 || n == 2) {
            return 1;
        } else {
            return f(n - 1) + f(n - 2);
        }
    }
}

Java递归实现求阶乘

public class Factorial {
    public static void main(String[] args) {
        // 5的阶乘
        System.out.println(factorial(5));
        // 10的阶乘
        System.out.println(factorial(10));
    }


    public static int factorial(int n) {
        // 递归出口
        if (n == 1) {
            return 1;
        } else {
            return n * factorial(n - 1);
        }
    }
}

Java递归实现遍历任意文件夹中的文件

import java.io.File;
import java.util.Scanner;

public class GetPath {
    public static void main(String[] args) {
        // 键盘接受需要遍历的文件夹
        Scanner sc = new Scanner(System.in);
        System.out.println("请输出要遍历的文件路径(例如:C:\\Users):");

        String path = sc.nextLine();

        // 可直接将path替换文件制定的文件加路径来遍历指定路径下的所有文件
        File file = new File(path);

        // 调用文件遍历方法
        getFilePath(file);
    }

    // 方法:循环遍历文件夹,输出所有其中的所有文件
    public static void getFilePath(File srcFile){
        File[] fileArray = srcFile.listFiles();
        if(fileArray != null){
            for(File file : fileArray){
                if(file.isDirectory()){
                    getFilePath(file);
                }else {
                    // 递归出口
                    System.out.println(file.getAbsoluteFile());
                }
            }
        }
    }
}

分类:

技术点:

相关文章: