算法训练 || 第39级台阶(递归)

小明刚刚看完电影《第 39 级台阶》。离开电影院的时候,他数了数礼堂前的台阶数,恰好是 39 级!
站在台阶前,他突然又想着一个问题:
如果我每一步只能迈上 1 个或 2 个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。那么,上完 39 级台阶,有多少种不同的上法呢?
请你利用计算机的优势,帮助小明寻找答案。

对于这道题目,很容易就能想到用递归来解决问题,但对于题目要求有些细节要注意,

  1. 第一步先迈左脚
  2. 左右脚交替,最后一步迈右脚,走偶数步
public class39级台阶 {
	static int count=0;
	//左脚(也就是奇数步的情况)
	public static int left(int i) {
		if(i==0)
			return 0;
		if(i==1) {
			count++;
			return 1;//左脚位于第一级台阶,种数为1(题目说,先迈左脚)
		}
		else {
			return right(i-1)+right(i-2);
		}

	}
	//右脚(也就是偶数步的情况)
	public static int right(int i) {
		if(i==0){
			count++;
			return 1;
		}
		if(i==1)	return 0;//因为先迈左脚,所以在第1级台阶右脚种数为0
		else {
			return left(i-1)+left(i-2);
		}
	}
	
	public static void main(String[] args) {
		right(39);
		System.out.println(count);//直接写System.out.println(right(39));也行,因为返回的就是种数
	}

}
发布了6 篇原创文章 · 获赞 10 · 访问量 509

猜你喜欢

转载自blog.csdn.net/Awwwze/article/details/104317289