递归和递推的区别

目录

1、递推

2、递归

3、结言

递归

递推


1、递推

递推就是说从初值出发后一直运算到所需的结果。

------从已知到未知。(从小到大)

举一个简单的例子:

每天能学习一个小时的编程,那么一个月之后可以学到三十小时的编程知识。

2、递归

递归就是说从所需的结果出发到不断回溯之前,直到回溯运算到初值,再递推回所需要求的结果。

------从未知到已知,再从已知到未知。(从大到小,再从小到大)

举一个更简单的例子:

你想进大厂或者年薪百万,就必须编程牛比得很,就得减少游戏时间,减少美色,减少快餐式的短视频消耗,努力学习。就这样一个大目标被分解为一个接着一个的小目标,通过完成一个接着一个的小目标来完成大目标。

3、结言

  • 递归就是指程序调反复用自身的编程思想。
  • 迭代就是可以说是用递推的思想,根据递推公式不断演进得到变量新值

结合一个经典的例子:斐波那契数列

递归

java 复制代码
class Solution {
    public int fib(int n) {
        if(n == 0)
            return 0;
        
        if(n == 1)
            return 1;

        return fib(n-1) + fib(n-2);

    }
}

递推

java 复制代码
class Solution {
    public int fib(int n) {
        int[] dp = new int[n+1];

        if(n == 0)
            dp[0] = 0;

        else if(n == 1)
            dp[1] = 1;

        else{
            dp[0] = 0;
            dp[1] = 1;

            for(int i=2; i<=n; i++){
                dp[i] = dp[i-1] + dp[i-2];
            }
        }

        return dp[n];
    }
}
相关推荐
唐青枫8 分钟前
Java Spring WebFlux 实战指南:用 Mono、Flux 和 WebClient 写响应式接口
java·spring
To_OC10 小时前
LC 49 字母异位词分组:想到哈希表很简单,选对 key 才是精髓
javascript·算法·leetcode
小bo波13 小时前
使用Thread子类创建线程 VS 使用Runnable接口创建线程的区别
java·多线程·thread·并发编程·runnable
SamDeepThinking14 小时前
高并发场景下,CompletableFuture与ForkJoinPool该如何取舍?
java·后端·面试
用户9385156350715 小时前
从 O(n²) 到 O(nlogn):一文读懂快速排序的“快”与“妙”
javascript·算法
To_OC16 小时前
手写快排次次翻车?别死背快排模板了,这才是面试官想听的底层逻辑
javascript·算法·排序算法
饼干哥哥17 小时前
Reddit VOC调研太慢?搭一个AI专家团队半小时洞察任何品类|以猫用饮水机为例
人工智能·算法·ai编程
张不才17 小时前
CPU 100% 了怎么办?Java 性能排障的标准化操作
java·后端
地平线开发者18 小时前
Transformer模型部署之性能优化指南
算法
地平线开发者18 小时前
人在途中:从“编译失败”到“模型可落地”——CUDA 自定义算子
算法·自动驾驶