题目:
描述:假设你正在爬楼梯,需要n步你才能到达顶部。但每次你只能爬一步或者两步,你能有多少种不同的方法爬到楼顶部?
样例
比如n=3,1+1+1=1+2=2+1=3,共有3中不同的方法
返回 3
思路:
即:当楼梯阶数n为1或2时,步数等于阶梯数;
当楼梯阶数大于2时,其步数为(n-1)的步数与(n-2)的步数之和。
源码:
package day01; import java.util.Scanner; public class climbStairs { public static void main(String[] args) { // TODO Auto-generated method stub Scanner print = new Scanner(System.in ); System.out.print("请给楼梯阶数n赋值:"); int n =print.nextInt(); climbStairs(n); // int a=climbStairs(5); // System.out.println(a); // } public static int climbStairs(int n) { // write your code here if(n == 0) { System.out.println("阶数为0,不存在爬楼梯步数"); return -1; } if(n <= 2){ System.out.println("当阶数为1或2时,爬楼梯步数即为1或2"); return n; } int n1=1,n2=2,n3=0; for(int i = 3; i <= n; i++) { n3 = n1 + n2; n1=n2 ; n2 = n3; } System.out.println("阶数为"+n+"时的爬楼梯数为:"+n3); return n3; } }