继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

递归算法

jeck猫
关注TA
已关注
手记 415
粉丝 74
获赞 402

故名思议自己调用自己,我们从简单到复杂、

/**
 * 递归
 */
public static void myI(int n) {
    if (n < 0) {
        return;
    } else {
        myI(n - 1);
        System.out.println(n);
    }
}
这个是最简单的递归
2,复杂点的就是阶乘 1,1,2,3,5,8,13想这样的
/**
 * 递归调用阶乘 1+1+2+3+5+8
 */
public int FibonacciSequence(int n){
    if(n==1 || n==2){
        return 1;
    }else{
        int i=FibonacciSequence(n-1)+FibonacciSequence(n-2);
        System.out.println(i+"数字");
        return FibonacciSequence(n-1)+FibonacciSequence(n-2);
    }
}
一个正序列,一个反序,为什会出入俩遍一开始我没有懂后来我懂了,是压栈了,
3,加大点难度的汉诺塔问题
 /**
     *
     * @param n         盘子的个数
     * @param start     开始的柱子
     * @param middle    中介柱子
     * @param end        结果的柱子
     */                       //5         1          2         3
    public static void hanoi(int n,int start,int middle,int end){
        if(n<=1){
            System.out.println(start+"---->"+end);
        }else{      //  1    3    2
            hanoi(n-1,start,end,middle);//把第一个上的n-1个移到中间
            System.out.println(start+"---->"+end);//把第一个上的一个移到最后
                    //  2     1     3
            hanoi(n-1,middle,start,end);//把中间的n-1个移到最后
        }
    }
这个的好好琢磨琢磨
生活中我们遍历内存卡用到递归。

原文链接:http://www.apkbus.com/blog-340477-76615.html

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP