算法思维:递归,分治,排序,动态规划

本文深入探讨了递归算法的概念,通过汉诺塔和斐波那切数列两个经典案例展示了递归的思想与应用。在汉诺塔问题中,递归解决了将所有盘子从一根柱子移动到另一根柱子的复杂过程;而在斐波那切数列中,递归公式用于计算每一项的值。这两个实例揭示了递归在解决递推问题时的强大能力。

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

1. 递归

递归(Recursion):在函数的定义中使用函数自身的方法。

1.1 算法思想

递归的基本思想是把规模大的问题拆解为规模小的,相同的子问题来解决(递推公式)。并且解决问题的函数必须有明确的结束条件(终止条件)。其数学模型是归纳法

1.2 案例

1) 汉诺塔

大梵天做了三根金刚石柱子,在一根柱子上从小到大摞着64片黄金圆盘。它命令婆罗门把圆盘按原有顺序摆放到另一根柱子上,要求每次只能移动一个盘子,且小盘上不能放大盘。

// 递推公式:
// 终止条件:
public static void main(String[] args){
    String x = "x";
    String y = "y";
    String z = "z";
    hanio(3, x, y, z);
}
public static void hanio(int n; String x; Sting y; String z){
    if (n < 1){
        System.out.println("层数小于1")
    } else if (n == 1) {
        System.ou.println("移动:" + x + "->" + z);
        return; 
    } else {
        hanio(n-1, x, z, y);
        System.out.println("移动:" + x + "->" + z);
        hanio(n-1, y, x, z);
    }
}

2) 斐波那切数列

递推公式:
终止条件:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值