递归练习
小明刚刚看完电影《第K级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是K级!
站在台阶前,他突然又想着一个问题:
如果我每一步只能迈上1个或2个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,
也就是说一共要走偶数步。那么,上完K级台阶,有多少种不同的上法呢?
请你利用计算机的优势,帮助小明寻找答案。
输入
一个整数K(10<=K<=20)
输出
整数,走法的种数
样例输入
10
样例输出
44
import java.util.Scanner;
public class homeWork {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int k = sc.nextInt();
System.out.println(f(k,0));
}
public static int f(int k,int bu) {
if((k == 0 && bu % 2 != 0)||k < 0 )
return 0;
if(k==0)
return 1;
return f(k - 1,bu + 1) + f(k - 2 , bu +1);
}
}
进阶做法(LeetCode 70题)
class Solution {
public int climbStairs(int n) {
int a = 1 ,b = 1;
for(int i = 2 ,c = 0;i <= n ;i ++) {
c = a + b;
a = b;
b = c;
}
return b;
}
}