A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 倒骑驴走着瞧 于 2015-4-5 12:16 编辑

import java.util.Scanner;
class JumpStep
{
        //青蛙跳台阶,跳n个台阶有多少种跳法(一次可以跳1阶或者2阶)
        public static void main(String[] args)
        {
                Scanner s = new Scanner(System.in);
                int n = 0;
                while(true){
                        System.out.print("请输入台阶数:");
                        n = s.nextInt();
                        int jumpNum = jump(n);
                        if(jumpNum==-1){
                                System.out.println("输入台阶数不合法");
                        }else{
                                System.out.println("跳"+n+"阶有"+jumpNum+"种跳法");
                        }
                }
                /*
                一次可跳1台阶或者2台阶
                台阶总数1-->jump(1)=1
                台阶总数2-->jump(2)=2
                台阶总数3-->jump(3)=3
                台阶总数4-->jump(4)=5
                台阶总数5-->jump(5)=8
                分析结果发现:台阶数大于等于3时,jump(n)=jump(n-1)+jump(n-2);//n>=3
                */
        }

        public static int jump(int n){
                if(n==1){
                        return 1;
                }else if(n==2){
                        return 2;
                }else if(n>=3){
                        return        jump(n-1)+jump(n-2);
                }else{
                        return -1;
                }
        }
}


评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

8 个回复

倒序浏览
不明觉厉
回复 使用道具 举报
加个异常判断就可以输入所有了
回复 使用道具 举报
Switch...不是也行?
回复 使用道具 举报
import java.util.Scanner;
class JumpStep
{
        //青蛙跳台阶,跳n个台阶有多少种跳法
        public static void main(String[] args)
        {
                Scanner s = new Scanner(System.in);
                int n = 0;
               
                while(true)
                {
                        System.out.print("请输入台阶数:");

                        try
                        {
                                n = s.nextInt();
                        }       
                        catch (Exception e)
                        {
                                System.out.println("输入台阶数不合法");
                                s.nextLine();                        //清除缓存
                                continue;
                        }
                        long jumpNum = jump(n);
                        if(jumpNum==-1){
                                System.out.println("输入台阶数不合法");
                        }else{
                                System.out.println("跳"+n+"阶有"+jumpNum+"种跳法");
                        }
                }
                /*
                一次可跳1台阶或者2台阶
                台阶总数1-->jump(1)=1
                台阶总数2-->jump(2)=2
                台阶总数3-->jump(3)=3
                台阶总数4-->jump(4)=5
                台阶总数5-->jump(5)=8
                分析结果发现:台阶数大于等于3时,jump(n)=jump(n-1)+jump(n-2);//n>=3
                */
        }

        public static long jump(int n){
                if(n==1){
                        return 1;
                }else if(n==2){
                        return 2;
                }else if(n>=3){
                        return        jump(n-1)+jump(n-2);
                }else{
                        return -1;
                }
        }
}

//添加异常捕获,并且可以无限输入
回复 使用道具 举报
我还真没发现居然是个斐波那契数列,好巧哦
回复 使用道具 举报
刚学没多久这个~
回复 使用道具 举报

是啊,基础的
回复 使用道具 举报
Sylvanas 发表于 2015-4-5 17:11
我还真没发现居然是个斐波那契数列,好巧哦

恩,好多得用递归
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马