递归学习资料

思路

例题

css 复制代码
package 递归;

public class 反向打印字符串 {
    public static void main(String[] args) {
            f("ABC",0);
    }
    static  void f(String str,int n){
        if (n==str.length()){
            return;
        }

        f(str,n+1);

        System.out.println(str.charAt(n)+"");

    }
}

多路递归

递归优化 -剪枝(记忆优化)

时间优化但是增加了空间成本,增加了空间复杂度。

css 复制代码
package 递归;

import java.util.Arrays;

public class 记忆优化递归 {
    public static void main(String[] args) {
        System.out.printf("", fibonmacci(5));
    }
//    使用记忆法 改进
//    params:n-第n项
//    Returns:第n项的之
    public static int fibonmacci(int n){
        int [] cache = new int [n+1];
        Arrays.fill(cache,-1);//[-1,-1]
        cache[0]=0;
        cache[1]=1;
        return  f(n,cache);
    }
    public  static  int f(int n,int [] cache){
//        if (n==0) {
//            return 0;
//        }
//        if (n==1) {
//            return 1;
//        }
        if (cache[n]!=-1) {
            return cache[n];
        }
        int x=f(n-1,cache);
        int y=f(n-2,cache);
        cache [n] =x+y;//存储当前计算的值
        return x+y;
    }
}

递归-爆栈问题

尾调用和尾递归

使内存能够得到及时的释放,某些编译器可以对尾调用做优化

相关推荐
YuanDaima20486 分钟前
双指针基础原理与题目说明
数据结构·人工智能·python·算法·leetcode·手撕代码
hef2887 分钟前
怎么诊断MongoDB Config Server响应极慢的问题_高频Auto-split导致的元库写入压力
jvm·数据库·python
也许明天y8 分钟前
Spring AI 核心原理解析:基于 1.1.4 版本拆解底层架构
java·后端·spring
qq_3806191612 分钟前
html怎么用deno运行_Deno如何作为本地服务器运行HTML文件
jvm·数据库·python
小鱼~~12 分钟前
进程和线程
python
小红的布丁19 分钟前
BIO、NIO、AIO 与 IO 多路复用:select、poll、epoll 详解
java·数据库·nio
Elastic 中国社区官方博客19 分钟前
在 Elastic 中使用 OpenTelemetry 内容包可视化 OpenTelemetry 数据
大数据·开发语言·数据库·elasticsearch·搜索引擎
lifallen20 分钟前
Flink Checkpoint 流程、Barrier 流动与 RocksDB 排障
java·大数据·flink
断眉的派大星21 分钟前
pytorch中保存训练模型和加载训练模型的用法
人工智能·pytorch·python
C+++Python22 分钟前
如何学习Python的应用领域知识?
开发语言·python·学习