Java:递归和回溯算法实例


前言

终于开始算法了。。。
递归真鸡儿抽象,没有基层原理就跟玄学一样。。。


一、利用递归能解决什么问题

在这里插入图片描述

二、递归调用机制

在这里插入图片描述

  • 调用机制大概就是谁调用就把结果返回给谁然后再从上到下依次执行代码程序

  • 关于这个打印问题:赋值text(4)。把输出加上else跟不加else的区别,1,如果不加上,那就是最后的text(2)不满足递归条件了,text(2)执行完程序后(打印当前n值)返回到text(3)里面也就是说在text(3)中text(2)执行完了,然后往下面再指向自己的打印语句,那么相对于text(4)也是一样的:每返回去一次就会打印当前n值一次。加了else:只有在最后的text(2)中不满足递归条件时,进行打印当前的n值,其他的text(3)text(4)都是满足的,所以返回时不执行else语句:也就是说把打印语句加上else,他只会在不满足递归条件时打印一次。(打印n=2)

  • 在这里插入图片描述

  • 关于阶乘:这个其实好理解,自己走一遍,遵循自上而下的执行,一个语句要执行到底(特别是递归),等他把所有的结果返回上来后在执行下面的语句

2.调用规则

请添加图片描述

三、利用递归的迷宫问题

1.说明

请添加图片描述

2.代码实现

public class MiGong {
   
    public static void main(String[] args) {
   
        //创建一个二维数组模拟迷宫
        //地图
        int map[][] = new int[8][7];//数组的初始化
        //他不是独立的数据,是共享的,所以递归都是改变的一个数组 
        //使用1表示墙
        //先把上下全部置为1
        for (int i = 0; i < 7; i++) {
   
            map[0][i] = 1;
            map[7][i] = 1;
        }
        //把左右置为1
        for (int i = 0; i < 8; i++) {
   
            map[i][0] = 1;
            map[i][6] = 1;
        }
        //设置挡板,1表示
        map[3][1] = 1;
        map[3][2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

本色温华

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值