爬楼梯

题目:

描述:假设你正在爬楼梯,需要n步你才能到达顶部。但每次你只能爬一步或者两步,你能有多少种不同的方法爬到楼顶部?

样例

比如n=31+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;
    }

}

 

posted @ 2017-03-08 11:43  Antssss  阅读(231)  评论(0编辑  收藏  举报