递归基础练习(下)

菜鸟日记—1月23日

案例一:

多分支递归,斐波那契数列

用代码求某一项斐波那契数列的值

斐波那契数列:这一项的值等于前两项的和
如: 1,1,2,3,5,8,13…

分解成两个子问题,f5(n-1)和f5(n-2)
static int f5(int n){
        if (n == 1 || n == 2){
            return 1;
        }
        return f5(n - 1) + f5(n - 2);
    }

效果图:
在这里插入图片描述
在这里插入图片描述
案例二:

求最大公约数

m对n不断取余,一直到n=0为止
默认m > n

static int f6(int m,int n){
        if (n == 0){
            return m;
        }
        return f6(n,m % n);
    }

效果图:
在这里插入图片描述
在这里插入图片描述
案例三:

插入排序

static void f7(int[] array,int k){
        if (k == 0){
            return;
        }
        int x = array[k];
        int index = k - 1;
        f7(array,k-1);
        while (x < array[index] && index > -1){
            array[index + 1] = array[index];
            index--;
        }
        array[index + 1] = x;
    }

案例四:

打印汉诺塔移动路径

在这里插入图片描述

static void printHanoiTower(int N,String from,String to,String help){
        if (N == 1){
            System.out.println("移动  " + N + "号盘子  " + from + " --> " + to);
            return;
        }
        //将1 ~ N-1个盘子从A柱移动到C柱,B作为辅助柱子(这里的移动并不是指直接移动)
        printHanoiTower(N - 1,from,help,to);
        //打印将N号盘子从A柱移动到B柱
        System.out.println("移动  " + N + "号盘子  " + from + " --> " + to);
        //将1 ~ N-1个柱子从C柱移动到B柱,A作为辅助柱子
        // (B柱此时放的柱子N最大,可以继续放任意柱子,所以可以视为空)
        printHanoiTower(N - 1,help,to,from);
    }
}

效果图:
在这里插入图片描述

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值