java递归解决39级台阶

期末复习递归时想到39级台阶这道题。

 
package recurion;

/**
 * @author hpc
 * @Date:2018-6-27下午7:18:32
 * 功能:递归实现39级台阶问题,由于左脚开始右脚结束所以总步数为偶数。
 */
public class TaiJie_39 {
	
	static int count = 0;//设置成员变量对走的步数计数,初始值为0.
	
	public static void main(String[] args) {
		
		f(39,0);
		
		System.out.println(count);
	}
	static void f(int stairs,int steps){
		
		if(stairs<0)return;
		
		if(stairs==0){//如果还剩的台阶数是0,则表示走完了,则对总步数是否是偶数进行判断
			
			if(steps%2==0){//如果是偶数,count加一
				
				count++;
			}
			return;
		}	
		f(stairs-1,steps+1);
		f(stairs-2,steps+1);//剩下的stairs如果不是0的话有两种走法
	}
}

 

package recurion;

/**
 * @author hpc
 * @Date:2018-6-27下午7:18:32
 * 功能:递归实现39级台阶问题,由于左脚开始右脚结束所以总步数为偶数。
 */
public class TaiJie_39 {
	
	static int count = 0;//设置成员变量对走的步数计数,初始值为0.
	
	public static void main(String[] args) {
		
		f(39,0);
		
		System.out.println(count);
	}
	static int f(int stairs,int steps){
		
		if(stairs==1){
			
			if(steps%2!=0){
				
				return count++;
			}
			else
				return 0;
		};
		if(stairs==0){
			
			if(steps%2==0){
				
				return count++;
			}
			else
				return 0;			
			
		}	
		return f(stairs-1,steps+1)+f(stairs-2,steps+1);
	}
}

因为左脚先上最后以右脚结束,所以必定是偶数步,这是最终的判断条件。以四个台阶为例,根据递归查找最终有两种可能。

java递归解决39级台阶_第1张图片

你可能感兴趣的:(java递归解决39级台阶)