假设你现在正在爬楼梯,楼梯有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 毫秒。
时间: 2024-10-12 20:44:40