精华内容
下载资源
问答
  • 计算斐波那契数列第n个值并打印出来 public class practice { public static void main(String[] args) { practice text = new practice(); System.out.println(text.method(7)); } //递归斐波那契数列 public int...
    • 斐波那契数列
    • 1 1 2 3 5 8 13 21 34
    • 一个数等于前两个数之和
    • 计算斐波那契数列第n个值并打印出来
    public class practice {
    public static void main(String[] args) {
    practice text = new practice();
    	System.out.println(text.method(7));
    }
    //递归斐波那契数列
    public int  method (int n) {
    	
    	if(n==1) {
    		return 1;
    	}else if(n==2) {
    		return 1;
    	}else {
    		return method(n-1)+method(n-2);	
    	}
    	
    }
    }
    
    展开全文
  • 输入你要求的第几个斐波那契数列的值,打印出对应的值(利用递归) import java.util.Scanner; class TestFibonacci{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); System.out....

    输入你要求的第几个斐波那契数列的值,打印出对应的值(利用递归)

    import java.util.Scanner;
    class TestFibonacci{
    	public static void main(String[] args){
    		Scanner sc = new Scanner(System.in);
    		System.out.println("请输入想要得到的第几个斐波那契数列:");
    		int num = sc.nextInt();
    		System.out.println(fibonacci(num));
    	}
    	public static int fibonacci(int n){
    		if(n == 1){
    			return 0;
    		}else if(n == 2){
    			return 1;
    		}
    		return fibonacci(n-1) + fibonacci(n-2);
    	}
    }
    
    展开全文
  • 每行 5 个,输出斐波那契数列的前 20 个数字 6.... 保存文件名为:bnds11.java class bnds11 { public static void main(String[] args) { int fib[] = new......{ Hanoi(n-1,b,a,c) } (1)用递归函数求斐波那契...

    每行 5 个,输出斐波那契数列的前 20 个数字 6. 编写程序接受用户输入一个...

    3 ? 这一公式输出斐波那契数列中的前 40 个数。 保存文件名为:bnds11.java class bnds11 { public static void main(String[] args) { int fib[] = new......

    { Hanoi(n-1,b,a,c) } (1)用递归函数求斐波那契数列的第 n...

    { sum += n; n++; }while(n <= 10); System.out.println("1~10 的数据和为:" + sum); } } 【例 2.17】使用间接递归方法,求斐波那契数列第 n ......

    斐波那契数列 a(0) = a(1) = 1,a(n) = a(n-1) + a(n-2),下面是Java实现同一个fibonacci数列,分别用递归和迭代方法来比较理解下。 上海师范大学—......

    (count); } } "123"; int count = 0; 9 计算斐波那契数列的前 n 项和 public class zuida { public static void main(String[] args) { System.out.......

    3、编写程序,输出斐波那契级数 1、1、2、3、5、8……的前 30 项,要求每行输出 5 个。 (用 数组来实现) 【提示】 斐波那契数列的特点是:第一、第二都是......

    。 要求: Java 源文件包含 main()方法, 运行能输出结果, 将制作好的应用程序类保存为 “T4.java” , 放在根文件夹下。 5. 竞赛第五题一个斐波那契数列是由......

    打印出第一个大于 3.1415 小于 3.1416 的值 4、输入一个数据 n,计算斐波那契数列(Fibonacci)的第 n 个值 1 1 2 3 5 8 13 21 34 5、求 1-1/3+1......

    1、搭建 Java 运行环境,并写一个 Java 程序打印输出“开始学习 Java 程序设计...{ break; } } } } 3、输入一个数据 n,计算斐波那契数列(Fibonacci)的第 n......

    搭建 Java 运行环境,并写一个 Java 程序打印输出“开始学习 Java 程序设 计!...break; } } } } 3、输入一个数据 n,计算斐波那契数列(Fibonacci)的第 n 个......

    现从键盘上输入一个正整数 n , 要求编写程序计算并输出斐波那契数列 的第 n ...

    .编写一个程序输出斐波那契数列中的前 20 个数,要 2 百度文库 - 让每个人...

    简要提示 ? 斐波那契数列的第一项和第二项是1,后面每一项是前 两项之和。 ? 使用递归方法完成。《Java 语言程序设计基础》 第11章 实训 实训5 对象的创建与......

    仪式.在仪式上他被要求献身于神学,并放弃数学和科 学.此后,除一个短暂的时期外(1658-1659),帕斯卡不 再从事数学研究. 2.帕斯卡三角形斐波那契数列 (1)掷硬币 ......

    (sum); } } //计算斐波那契数列(Fibonacci)的第 n 个值 //并把整个数列打印出来 public class FibonacciPrint{ public static void main(String args[]){ ......

    请列出至少 5 个 java 中常用的 Interface,并说明其用途 7,请说明 throws,...编程题 4: 斐波那契数列指的是这样一个数列:1,1,2,3,5,8,13,21…… ......

    (考点: 递归) 利用递归输出斐波那契数列前 n 个元素 (斐波那契数列规律: ...

    搭建 Java 运行环境,并写一个 Java 程序打印输出“开始学习 Java 程序设 计!...} } } } 3 、输入一个数据 n ,计算斐波那契数列 (Fibonacci) 的第 n 个......

    的数列,其中从第三位数字开始,每一个数字都是前两个数字的加和,例如:1,1,2,3,5,8,13, 21,34……..,现在请利用循环语句输出 100 以内的斐波那契数列 ......

    展开全文
  • 下面用了4中方法打印斐波那契数列的前50项: 1、普通方法 2、数组方法 3、集合方法 4、递归方法 5、Map方法 6、BigDecimal方法 二、源码 结合网上的方法,再加上同事同学提供的建议,加上自己的研究,源...

    一、问题

    下面用了6种方法打印斐波那契数列的前50项:
    1、普通方法
    2、数组方法
    3、集合方法
    4、递归方法
    5、Map方法
    6、BigDecimal方法

    二、源码

    结合网上的方法,再加上同事同学提供的建议,加上自己的研究,源代码如下:

    import java.math.BigDecimal;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    public class fibonacciTest {
        public static void main(String[] args) {
            int length=1000;
    
    
            long t1=System.currentTimeMillis();
            //1、普通打印
            fibonacciOrdinary(length);
            long t2=System.currentTimeMillis();
    
            //2、数组打印
            fibonacciMethodOfArray(length);
            long t3=System.currentTimeMillis();
    
            //3、集合打印
            fibonacciMethodOfList(length);
            long t4=System.currentTimeMillis();
    
            //4、递归打印
            //fibonacciMethodOfRecursive(length);
            long t5=System.currentTimeMillis();
    
            //5、Map打印
            fibonacciMethodOfMap(length);
            long t6=System.currentTimeMillis();
    
            //6、测试
            fibonacciMethodOfBigDecimal(length);
            long t7= System.currentTimeMillis();
    
    
            System.out.println("普通方法耗时:"+(t2-t1)+"ms");
            System.out.println("数组方法耗时:"+(t3-t2)+"ms");
            System.out.println("集合方法耗时:"+(t4-t3)+"ms");
            System.out.println("递归方法耗时:"+(t5-t4)+"ms");
            System.out.println("Map方法耗时:"+(t6-t5)+"ms");
            System.out.println("BigDecimal方法耗时:"+(t7-t6)+"ms");
    
        }
    
        /****************************************************/
        //普通
        private static void  fibonacciOrdinary(int length){
            double a = 1, b = 1, c = 2;
            System.out.println("【普通方法】斐波那契数列前"+length+"项为:");
            System.out.println("第"+1+"项:"+a);
            System.out.println("第"+2+"项:"+b);
            //因为前面还有两个1、1 所以i<=18
            for (int i = 1; i < length; i++) {
                c = a + b;
                a = b;
                b = c;
                System.out.println("第"+(i+1)+"项:"+c);
            }
        }
    
    
        /***************************************************/
        //数组,有问题
        private static void fibonacciMethodOfArray(int length){
            double array [] = new double[length];
            array[0] = 1.0;
            array[1] = 1.0;
            for (int i=2;i<length;i++){
                array[i]=array[i-1]+array[i-2];
            }
            System.out.println("【数组方法】斐波那契数列前"+length+"项如下所示:");
            for (int i=0;i<length;i++){
                System.out.println("第"+(i+1)+"项:"+array[i]);
            }
        }
    
    
        /************************************************/
        //集合
        private static void fibonacciMethodOfList(int length){
            List<Double> longList = new ArrayList<>();
            longList.add(1.0);
            longList.add(1.0);
            System.out.println("【集合方法】斐波那契数列前"+length+"项如下:");
            for (int i=2;i<length;i++){
                longList.add(longList.get(i-1)+longList.get(i-2));
            }
            for (int i=0;i<length;i++){
                System.out.println("第"+(i+1)+"项的值为:"+longList.get(i));
            }
        }
    
        /************************************************/
        //递归;效率明显偏低
        private static void fibonacciMethodOfRecursive (long length){
            System.out.println("【递归方法】斐波那契数列的前"+length+"项为:");
                for (int j = 1; j <= length; j++) {
                    System.out.println("第"+j+"项:"+getFibonacci(j));
                }
        }
    
        private static int getFibonacci(int i) {
            if (i == 1 || i == 2)
                return 1;
            else
                return getFibonacci(i - 1) + getFibonacci(i - 2);
        }
    
        /************************************/
        //Map
        private static void fibonacciMethodOfMap(int length){
            System.out.println("【Map方法】斐波那契数列的前"+length+"项为:");
            Map<Integer,String> array  = new HashMap<>(1000,1f);
                array.put(0, "1");
                array.put(1, "1");
                array.put(2, "2");
                for (int i=3;i<=length;i++){
                    BigDecimal decimal1 = new BigDecimal(array.get(i-1));
                    BigDecimal decimal2 = new BigDecimal(array.get(i-2));
                    array.put(i, decimal1.add(decimal2).toString());
                }
                for (int i=0;i<length;i++){
                    System.out.println("第"+(i+1)+"项:"+array.get(i));
                }
        }
    
        /************************************/
        //测试
        private static void  fibonacciMethodOfBigDecimal(int length){
            System.out.println("【BigDecimal方法】斐波那契数列的前"+length+"项为:");
            BigDecimal decimal1 = new BigDecimal(1);
            BigDecimal decimal2 = new BigDecimal(1);
            BigDecimal decimal;
            for (int i=2;i<=length;i++){
    
                if (i==1){
                    System.out.println("第1项"+decimal1);
                }else if (i==2){
                    System.out.println("第2项"+decimal2);
                }else {
                    decimal=decimal2.add(decimal1);
                    decimal1=decimal2;
                    decimal2=decimal;
                    System.out.println("第"+i+"项"+decimal);
                }
            }
        }
    
    }
    
    

    三、结果

    打印斐波那契前1000个数结果如下:

    普通方法耗时:243ms
    数组方法耗时:162ms
    集合方法耗时:80ms
    //递归方法耗时:0ms
    Map方法耗时:293ms
    BigDecimal方法耗时:97ms
    

    四、分析

    4.1、【效率性】从效率上看,数组,集合,BigDecimal方法较为快速;但是这里有个不确定因素就是机器性能是不是平均的,并且打印耗时也是很严重的,所以上面的结果仅供参考;集合等方法虽然快,但是不适合大数字的计算;递归方法太慢,是不合适的;

    4.2、【正确性】

    普通方法,数组方法,集合方法不能高位数计算; 而Map方法,BigDecimal方法均使用了BigDecimal,所以可以高位数计算; 而BigDecimal又剥离了Map外衣,所以大数据量建议用后两种方法;

    	//BigDecimal方法
        private static void  fibonacciMethodOfBigDecimal(int length){
            System.out.println("【BigDecimal方法】斐波那契数列的前"+length+"项为:");
            BigDecimal decimal1 = new BigDecimal(1);
            BigDecimal decimal2 = new BigDecimal(1);
            BigDecimal decimal;
            for (int i=2;i<=length;i++){
    
                if (i==1){
                    System.out.println("第1项"+decimal1);
                }else if (i==2){
                    System.out.println("第2项"+decimal2);
                }else {
                    decimal=decimal2.add(decimal1);
                    decimal1=decimal2;
                    decimal2=decimal;
                    System.out.println("第"+i+"项"+decimal);
                }
            }
        }
    
    展开全文
  • 详细步骤都再注释里了~ public class HowToCreateRecursion { /* * 创建递归的步骤 * 1 找重复:更小规模的子问题 ... * 用递归打印i到j之间的数 * @param i * @param j */ public ...
  • Java代码实现斐波那契数列

    千次阅读 2018-11-05 10:45:44
    Java代码实现斐波那契数列 使用递归调用 import java.util.Scanner; public class Fibonacci { public static void main(String[] args) { // System.out.println("打印几个费式数?\t"); ...
  • 斐波那契数列 斐波那契数列又称黄金分割列数,指的是这样一个数列“ 0, 1, 1, 2, 3, 5, 8, 13, 21, … import java.util.Scanner; class Demo01 { public static void main(String[] args) { Scanner sc = new...
  • java 递归及其经典应用--求阶乘、打印文件信息、计算斐波那契数列 什么是递归 我先看下百度百科的解释: 一种计算过程,如果其中每一步都要用到前一步或前几步的结果,称为递归的。用递归过程定义的函数,称为递归...
  • java实现斐波那契数列

    2017-03-16 18:36:16
    输入要打印的数字的个数,然后打印斐波那契数列,并且计算了总和。。。。。。 package demo; import java.util.Scanner; /** * 实现简单的斐波那契数列(利用递归算法) * * @author Administrator * */ ...
  • 递归是以自相似的方式重复项目的过程。...示例以下是使用递归函数查找给定数字的斐波那契数列的示例publicclassFibonacciSeriesUsingRecursion{publicstaticlongfibonacci(longnumber){if((number==0)||(number==...
  • 什么是递归我先看下百度百科的解释:一种计算过程,如果其中每一步都要用到前一步或前几步的结果,称为递归的。用递归过程定义的函数,称为递归函数,例如连加、连乘及阶乘等。凡是递归的函数,都是可计算的,即能行...
  • }/*** 递归打印斐波那契数列** @param i 第一项* @param j 第二项* @param max 最大数*/private void print(int i, int j, int max) {// 如果j为1, 说明是前两项, 因为前两项都是1, 提前打印...
  • 如何在控制台中打印斐波那契数列斐波那契数列:指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2...
  • 斐波那契数列

    2018-03-28 11:12:22
    一个斐波那契数列是由数字1、1、2、3、5、8、13、21、34等等组成的,其中每一个数字(从第三个数字起)都是前两个数字的和。创建一个方法,接受一个整数参数,并显示从...步骤:传参,利用递归打印斐波那契数列public cl
  • 斐波纳契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……在数学上,以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n&gt;=2,n∈N*)   代码实现: import java....
  • 思路:当输入的数字为个位数时,可以直接打印。所以递归出口为个位数。 import java.util.Scanner; public class Test { public static void main(String[] args) { Scanner input=new Scanner(System.in...
  • 递归 一、概念:自己调用自己 案例:需求:算5! 方法一:使用for循环 int result=1; for (int i = 1; i <=5; i++) { result=result*i; } System.out.println(result); } 方法二:使用递归 public ...
  • 1.题目描述:求n的阶乘(递归方法) //1.递归求n的阶乘 public static int factor(int n){ if(n == 1){ return 1; } return n * factor(n - 1); } public static void main1(String[] args) { int n = 5;...
  • //代码示例1 按顺序打印一个数字的每一位(例如 1234 打印出 1 2 3 4) public class Test1_printNum { public static void main(String[] args){ System.out.println(“请输入数字:”); Scanner sc=ne...
  • 1、递归求 N 的阶乘 2、递归求 1 + 2 + 3 + … + 10 3、按顺序打印一个数字的每一位(例如 1234 打印出 1 2 3 4) (递归) 4、写一个递归方法,输入一个非负整数,返回组成它的...5、递归斐波那契数列的第 N 项 ...
  • Java函数的递归

    2019-07-25 18:42:48
    递归简介:递归是一种针对使用简单的循环难以编程实现的问題,提供优雅解决方案的技术,递归方法是调用自身的方法。 如下图展示递归调用的执行过程: 注意:使用循环来实现 factorial...例如:打印斐波那契数列的...

空空如也

空空如也

1 2
收藏数 40
精华内容 16
关键字:

java递归打印斐波那契数列

java 订阅