最近关于递归的一点训练

这些是最近做的几道递归训练题目

最近学了点递归,就是看了几道题目。就是有了点初步了解,但是还谈不上什么熟练。
这是我最近做的一些题目。
1、青蛙跳台阶

一只青蛙前面有n个台阶,青蛙可以一次跳1或者2阶,求青蛙跳完台阶有多少种跳法。

import java.util.Scanner;

public class 跳台阶 {
int JumpFloor(int n){
if(n == 1) return 1;//还剩一阶直接跳
else if( n== 2) return 2;//一次跳两阶或者一阶一阶跳两种情况
else return JumpFloor(n - 1) + JumpFloor(n - 2);//这次的情况,拆分成一次跳一阶和跳两阶
}
public static void main(String[] args) {
跳台阶 a = new 跳台阶();
System.out.println(“请输入你的青蛙想要跳的阶数”);
int jie = new Scanner(System.in).nextInt();
System.out.println(“青蛙的跳跃总共有” + a.JumpFloor(jie) + “种情况” );
}
}

在这里插入述
结果展示大概就是这样
2:
我们可以用21的小举行横着或者数着去覆盖更大的矩形。请问用n个21的小举行无重叠 的覆盖一个2n的大矩形,请问总共多少种覆盖方法。
在这里插入图片描述懒癌晚期的我决定上图片!!!!!
前者,target就是说的当前给与的n的大小。
做题前先来个小分析:
首先来看target == 1的
在这里插入图片描述
很明显,答案只有一个,返回1.
target == 2,好像有2种情况
返回2吧
在这里插入图片描述
但是再观察一下,能够延伸的就只有左右了,上下不行。由此可见,排列的形式就如上的,由此可以这么组合,每次抽出2
1或者2*2大小的格子,任意组合作为一种情况。但是每次竖着的也仅仅相当与两次横着的,于是每次试着分离出1个或者2个格子这种情况。
在这里插入图片描述
为什么右边没有分两种情况呢?
比如说:
在这里插入图片描述
类似这样?
在这里插入图片描述
重复了啊
方法必须不能重复的。
我自身水平有限,如有不好的地方还是需要改正的。
.
.
.
.
.
.

差点忘记补上了
在这里插入图片描述
所以出现了这个东西。

跳台阶有个拓展题目,方法类似。嗯……
在这里插入图片描述
跳台阶有个类似的东西,思考了下,大概就这样吧
另一个神奇的跳台阶:青蛙改成一次跳1~n级的。
(懒癌继续)因为之前没想太多,只是截了个图,所以就不写代码出来了。
在这里插入图片描述
各种情况一加,想下就好了,只是有些微小的变化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值