手撕链表递归

目录

一.方法递归的概念:

递的过程:函数自己不停的条用自己的过程。

归的过程:函数不断返回的过程。

二.什么场景下可以使用递归

三.(干货)任何写出递归代码

写出递归代码 = 终止条件+不借助任何方法解除当前问题+剩余问题交给当前方法;

举例:

调用过程图:

例题代码


一.方法递归的概念:

在方法内部自己调用自己,存在递的过程和归的规程。

递的过程:函数自己不停的条用自己的过程。

归的过程:函数不断返回的过程。

二.什么场景下可以使用递归

1.一个大问题可以拆分成若干个相同子问题的解

2.拆分后的函数,除了数据规模不同,解题思路完全相同

3.存在递归终止条件

三.(干货)任何写出递归代码

在写递归的过程中不在纠结方法内部到底如何实现,而要注重语义(方法的功能),就假设方法已经写好,自己直接拿来用。

写出递归代码 = 终止条件+不借助任何方法解除当前问题+剩余问题交给当前方法;

举例:

求n的阶乘:

调用过程图:

例题代码

/**
     * 功能:传入任意n我就能求出他的阶乘值
     *
     * @param n
     * @return
     */
    public static int 单手撕递归(int n){
        //1.递归终止条件
        if (n == 1){
            return n;
        }
        //2.不需要借助任何方法,就可以解除当前问题,当前问题就是求n自身
        //3.剩下的(n-1)的阶乘问题,交给  单手撕递归(int n)  这个方法

        //我当前只知道n的值,剩下的值n-1我不知道,交给别人去处理
        //调用单手撕递归,能帮我求出n-1的阶乘值
        //最后我只需要拼接答案即可
        return n * 单手撕递归(n-1);
    }

  • 49
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 54
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 54
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值