黑马程序员技术交流社区

标题: 青蛙跳台阶,跳n个台阶有多少种跳法(递归方法+Scanner) [打印本页]

作者: 倒骑驴走着瞧    时间: 2015-4-5 12:13
标题: 青蛙跳台阶,跳n个台阶有多少种跳法(递归方法+Scanner)
本帖最后由 倒骑驴走着瞧 于 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;
                }
        }
}



作者: tu3    时间: 2015-4-5 12:17
不明觉厉
作者: 随缘就好    时间: 2015-4-5 12:41
加个异常判断就可以输入所有了
作者: One_M    时间: 2015-4-5 14:43
Switch...不是也行?
作者: 倒骑驴走着瞧    时间: 2015-4-5 15:24
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
我还真没发现居然是个斐波那契数列,好巧哦
作者: 大神在何方    时间: 2015-4-5 23:40
刚学没多久这个~
作者: 倒骑驴走着瞧    时间: 2015-4-6 22:13
大神在何方 发表于 2015-4-5 23:40
刚学没多久这个~

是啊,基础的
作者: 倒骑驴走着瞧    时间: 2015-4-6 22:14
Sylvanas 发表于 2015-4-5 17:11
我还真没发现居然是个斐波那契数列,好巧哦

恩,好多得用递归




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2