跳台阶,变态跳台阶,矩形覆盖 代码实现

本文通过三个典型例题——跳台阶、变态跳台阶及矩形覆盖,介绍了如何使用递归和循环来解决问题的方法。每道题目都给出了具体的编程实现代码,并且强调了寻找规律的重要性。

跳台阶( ( 考点: 递归和循环) )

题目描述

一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级。求该青蛙跳上一个 n 级的台阶?

public int JumpFloor(int target) {

		if (target <= 0) {

			return -1;
		} else if (target == 1 || target == 2) {
			return target;
		} else {
			return JumpFloor(target - 1) + JumpFloor(target - 2);
		}
	}

 变态跳台阶( ( 考点: 递归和循环) )

题目描述
一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级……它也可以跳上 n 级。求
该青蛙跳上一个 n 级的台阶总共有多少种跳法?

public int JumpFloorII(int target) {
		if (target <= 0) {
			return -1;
		} else if (target == 1) {
			return 1;
		} else {
			return 2 * JumpFloorII(target - 1);
		}
	}

矩形覆盖( ( 考点: 递归和循环) )

题目描述
我们可以用 2*1 的小矩形横着或者竖着去覆盖更大的矩形。请问用 n 个 2*1 的
小矩形无重叠地覆盖一个 2*n 的大矩形,总共有多少种方法?

public int RectCover(int target) {
		if (target < 1) {
			return 0;
		} else if (target == 1 || target == 2) {
			return target;
		} else {
			return RectCover(target - 1) + RectCover(target - 2);
		}
	}

总结:其实所有的这类简单的规律类算法笔试题目,都有一个笨办法,那就是找规律,列出n由1开始增加后对应的不同的结果,如果结果和n前几个总是相等的,那尽量多列出几个,防止陷阱。数据得出之后利用二元一次方程(a*n+b=结果)的解法求出它们的关系,得出a和b的值,然后着手编程。当然这种方法效率不高,如果我们想高质量的利用编程实现,以递归方法为例,那么最好是把得出的值与之前的值进行比较,找出规律。这个时候你会发现,世界真奇妙,用递归解决起来如此简单。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值