ジャンプステップ、変態ジャンプステップ、矩形カバーコード実現

1349 ワード

階段を跳ぶ(考点:再帰と循環))テーマの説明
1匹のカエルは一度に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段の階段を飛び上がることもできます.このカエルが1つの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の小さい矩形で重ならずに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);
		}
	}

まとめ:実はすべてのこのような簡単な法則類のアルゴリズムの筆記試験のテーマは、すべて1つの愚かな方法があって、それは法則を探して、nが1から増加した後に対応する異なる結果をリストして、もし結果がnの前のいくつかといつも等しいならば、できるだけ多くいくつかリストして、罠を防止します.データが得られた後,二元一次方程式(a*n+b=結果)の解法を用いてそれらの関係を求め,aとbの値を求め,プログラミングに着手した.もちろんこの方法は効率的ではありませんが、プログラミングを高品質に利用し、再帰的な方法を例に挙げるには、得られた値を前の値と比較し、法則を見つけたほうがいいです.この时、あなたは発見することができて、世界は本当に奇妙で、再帰で解決するのはこんなに簡単です.