java-6.递归

本文探讨了Java中的递归概念,强调了递归过程中引用类型的共享特点和终止条件的重要性。通过汉诺塔问题举例,阐述了递归解决策略。同时,提到了回溯法作为深度优先搜索的一种应用,用于解决如迷宫问题等场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 注意递归是从最上面的栈逐层返回谁调用就返回给谁
  • 如果传递的是引用类型,会共享引用类型的数据
  • 递归要有退出递归的条件。
  • 汉诺塔:有一个盘的情况,直接从A->C,其他都看成底下一个盘算一个,上面所有盘算一个共两个盘的情况A->B,A->C,B->C.即借用中间的柱从开始柱转移到目标柱。
    • 以3个盘为例,经过一番操作中间(B)有两个小盘,最大的盘已经放在目标柱(C)上了,此时最大盘已经好了,不管他了,剩下两个小盘的开始柱为B,借用中间柱A到目标柱C上。
  • 回溯的基本思想是:从一条路往前走,能进则进,不能进则退回来,换一条路再试。为深度优先搜索
  • 典型:如迷宫问题,前进一个改变状态,如果不满足条件要回到上一个,还要把状态变回原来的样子
public void funtion(参数) {
    if (终止条件) {
        存放结果;
        return;
    }
    for (选择:本层集合中元素) {
        改变节点状态;
        function(路径,选择列表); // 递归
        回溯,撤销节点状态的改变
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值