1. 程式人生 > >青蛙跳臺階(java)

青蛙跳臺階(java)

一、問題描述

一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法。

二、演算法分析

因為青蛙一次只能跳上1級臺階或者兩級臺階,所以對於第n級臺階來說,青蛙只能從第n-1級臺階或者第n-2級臺階跳上。

設青蛙跳上第n級臺階有f(n)種跳法,則

f(n) = f(n-1)+f(n-2),n>2

f(2) = 2

f(1) = 1

三、演算法設計

兩種解題方案,一,遞迴法;二,迭代法

根據遞推公式進行求解

四、編碼實現

一、遞迴法

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

二、迭代法

public int jumpFloor1(int target) {
		 if(target <= 0) return 0;
		 if(target == 1) return 1;
		 if(target == 2) return 2;
		 int one = 1;
		 int two = 2;
		 int result =  0;
		 for(int i=2; i<target; i++){
			 result = one + two;
			 one = two;
			 two = target;
		 }
		 return result;
	}