假设你现在正在爬楼梯,楼梯有n级。每次你只能爬1级或者2级,那么你有多少种方法爬到楼梯的顶部?
格式:
第一行输入一个数n(n<=50),代表楼梯的级数。
接下来一行输出你的方法总数。
样例输入
5
样例输出
8
==========================
第一次code:
1 import java.util.Scanner; 2 3 public class Main 4 { 5 public static void main(String[] args) 6 { 7 Scanner input = new Scanner(System.in); 8 System.out.println(a(input.nextInt())); 9 } 10 static long a (int n) 11 { 12 int a = n / 2; 13 int b = n - a*2; 14 long c=0; 15 if(a==0) 16 { 17 return 1; 18 } 19 else 20 { 21 for(int i=0;i<a;i++) 22 { 23 c += work(n-(i+1),i+1); 24 } 25 return c+1; 26 } 27 } 28 /** 29 * 计算排列组合 30 * @param n 31 * @param k 32 * @return 33 */ 34 static long work(int n , int k) 35 { 36 if(k > n/2) 37 { 38 k = n-k; 39 } 40 long a = 1; 41 long b = 1; 42 int i; 43 for(i = 1 ; i <= k ; ++i) 44 { 45 a *= n-i+1; 46 b *= i; 47 if(a%b == 0) 48 { 49 a /= b; 50 b = 1; 51 } 52 } 53 return a/b; 54 } 55 }
台阶数为 1 阶时,方法数为:1
台阶数为 2 阶时,方法数为:2
台阶数为 3 阶时,方法数为:3
台阶数为 4 阶时,方法数为:5
台阶数为 5 阶时,方法数为:8
台阶数为 6 阶时,方法数为:13
台阶数为 7 阶时,方法数为:21
台阶数为 8 阶时,方法数为:34
台阶数为 9 阶时,方法数为:55
台阶数为 10 阶时,方法数为:89
台阶数为 11 阶时,方法数为:144
台阶数为 12 阶时,方法数为:233
台阶数为 13 阶时,方法数为:377
台阶数为 14 阶时,方法数为:610
台阶数为 15 阶时,方法数为:987
台阶数为 16 阶时,方法数为:1597
台阶数为 17 阶时,方法数为:2584
台阶数为 18 阶时,方法数为:4181
台阶数为 19 阶时,方法数为:6765
台阶数为 20 阶时,方法数为:10946
台阶数为 21 阶时,方法数为:17711
台阶数为 22 阶时,方法数为:28657
台阶数为 23 阶时,方法数为:46368
台阶数为 24 阶时,方法数为:75025
台阶数为 25 阶时,方法数为:121393
台阶数为 26 阶时,方法数为:196418
台阶数为 27 阶时,方法数为:317811
台阶数为 28 阶时,方法数为:514229
台阶数为 29 阶时,方法数为:832040
台阶数为 30 阶时,方法数为:1346269
台阶数为 31 阶时,方法数为:2178309
台阶数为 32 阶时,方法数为:3524578
台阶数为 33 阶时,方法数为:5702887
台阶数为 34 阶时,方法数为:9227465
台阶数为 35 阶时,方法数为:14930352
台阶数为 36 阶时,方法数为:24157817
台阶数为 37 阶时,方法数为:39088169
台阶数为 38 阶时,方法数为:63245986
台阶数为 39 阶时,方法数为:102334155
台阶数为 40 阶时,方法数为:165580141
台阶数为 41 阶时,方法数为:267914296
台阶数为 42 阶时,方法数为:433494437
台阶数为 43 阶时,方法数为:701408733
台阶数为 44 阶时,方法数为:1134903170
台阶数为 45 阶时,方法数为:1836311903
台阶数为 46 阶时,方法数为:2971215073
台阶数为 47 阶时,方法数为:4807526976
台阶数为 48 阶时,方法数为:7778742049
台阶数为 49 阶时,方法数为:12586269025
台阶数为 50 阶时,方法数为:20365011074
单次运算,时间效率为 0 毫秒。