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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李云贵 中级黑马   /  2014-7-19 14:13  /  3706 人查看  /  5 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.util.Scanner;

/*
* 第二题:求斐波那契数列第n项,n<30
*/
public class Test2{
       
        public static void main(String args[]){
                //定义一个整数变量,记录第n项的值
                int fn;
                //创建一个键盘扫描类对象
                Scanner input = new Scanner(System.in);
                //输出提示
                System.out.println("请输入一个小于30整数");
                //输入整数
                int n = input.nextInt();
                //关闭input
                input.close();
                //判断输入是否符合 n<30
                if(n<=0||n>=30){
                        System.out.println("不正确的输入");
                        return;
                }
                //调用求斐波那契第n项的函数
                fn=fb(n);
                //输出结果
                System.out.printf("斐波那契数列第 %d 项为 %d", n,fn);
        }
       
        //递归函数求斐波那契第n项
        public static int fb(int n){
               
                //前两项都是1
                if(n<3) return 1;
                //递归调用,返回前两项的和
                return fb(n-2)+fb(n-1);
        }
}

5 个回复

倒序浏览
你还可以尝试一下 大数求斐波那契数列   杭电ACM 上面的  
回复 使用道具 举报
M单色调 来自手机 中级黑马 2014-7-19 21:48:52
藤椅
递归。我考这道题的时候用的是循环。
回复 使用道具 举报
我也用的for循环   不知道哪种更效率,虽然递归代码很简洁
回复 使用道具 举报
这是个什么数????????
回复 使用道具 举报
小乖乖灬浩歌 来自手机 中级黑马 2014-7-19 23:59:10
地板
递归的效率一般都慢  但是现代的编译器会进行优化  最终效果比原生会  比循环低
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马