递归之斐波那契数列java的3种方法

本文实例为大家分享了java递归之斐波那契数列的具体代码,供大家参考,具体内容如下

第一种、普通写法

public class Demo { 

  public static void main(String[] args) {
    int num1 = 1;
    int num2 = 1;
    int num3 = 0;
    System.out.println(num1);
    System.out.println(num2);
    for (int i = 1; i < 10; i++) {
      num3 = num1 + num2;
      num1 = num2;
      num2 = num3;
      System.out.println(num3);
    }
  }
} 

第二种、数组形式递归的写法

public class DIGUI1 { 

  public static void main(String[] args) {
    int []arr=new int[20];
     arr[1]=1;
     arr[2]=1;
     System.out.print(" "+arr[1]);
     System.out.print(" "+arr[2]);
    for(int i=3;i<20;i++){
       arr[i]=arr[i-1]+arr[i-2];
      System.out.print("  "+arr[i]);
    }
  }
 } 

第三种、递归形式的写法

public class Demo { 

  public static int f(int n) throws Exception {
    if(n==0){
      throw new Exception("参数错误!");
    }
    if (n == 1 || n == 2) {
      return 1;
    } else {
      return f(n-1)+f(n-2);//自己调用自己
    }
 } 

  public static void main(String[] args) throws Exception {
    for (int i = 1; i <=10; i++) {
      System.out.print(f(i)+" ");
    }
  }
}

用递归最大的问题就是效率问题了,但是有的程序必须用递归写才可以写出来。例如著名的汉若塔问题,如果有谁可以用其他方式写出来我服。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Java递归实现斐波那契数列

    程序调用自身的编程技巧称为递归( recursion).递归做为一种算法在程序设计语言中广泛应用. 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量.递归的能力在于用有限的语句来定义对象的无限集合.一般来说,递归需要有边界条件.递归前进段和递归返回段.当边界条件不满足时,递归前进:当边界条件满足时,递归返回.--这是百度百

  • java递归读取目录下所有文件的方法

    java递归读取目录下的所有文件(包含子目录下的所有文件)大概思路如下:通过file.listFiles()方法获取目录下的所有文件(包含子目录下的所有文件),得到files[]数组,然后遍历得到的所有文件,通过isFile(文件)和isDirectory(文件夹)方法来判断读取的是文件还是文件夹,如果得到的是文件夹,就递归调用test()方法,如果得到的是文件,就将其加入fileList中,最后测试的时候遍历fileList下的所有文件,来验证读取数据的准确性. package com.cha

  • Java利用递归算法实现查询斐波那契数

    package 斐波那契数; import java.util.Scanner; class 斐波那契数 { public static void main(String[] args) { System.out.println("请输入想查询的第几个斐波拉楔数"); long n = new Scanner(System.in).nextLong(); System.out.println(f(n)); } private static int f(long n) { if(n==1

  • java利用递归调用实现树形菜单的样式

    一:需求 现有以需求就是把某一个帖子的全部评论展示出来. 二:分析 关于对帖子的评论分为主评论和子评论,主评论就是对帖子的直接评论,子评论就是对评论的评论. 三:思路 先获取某一个帖子的全部主评论,递归判断是否有子评论,获取子评论. 递归本质:程序调用自身的编程技巧叫做递归. 程序调用自身的编程技巧称为递归( recursion).递归做为一种算法在程序设计语言中广泛应用. 一个过程或函数在其定义或说明中有直接或间接调 用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模

  • Java递归实现字符串全排列与全组合

    排列组合算法用途广泛,需要掌握,为降低门槛,本文主要关注算法的逻辑和简易性,未重视算法效率. 结合网络书本上的实现和自己的需求,这里列有四个目标: 1. 所有元素的全排列: ab的全排列是ab, ba(顺序相关); 2. 所有元素的全组合: ab的全组合是a, b, ab(顺序无关); 3. 求n个元素中选取m个元素的组合方式有哪些: abc中选2个元素的组合是ab, ac, bc; 4. 求n个元素中选取m个元素的排列方式有哪些: abc中选2个元素的排列是ab, ba, ac, ca, bc

  • Java实现的质因数分解操作示例【基于递归算法】

    本文实例讲述了Java实现的质因数分解操作.分享给大家供大家参考,具体如下: 这里演示java通过递归实现质因数分解,代码如下: import java.util.Scanner; public class Prime { @SuppressWarnings("resource") public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print(&qu

  • Java递归算法遍历部门代码示例

    递归是一个非常有用的知识点.写点实例帮助自己记忆 中间有过程代码 首先一个javapojo类 package com.qcf.po; import java.util.HashSet; import java.util.Set; public class Depart { private long id; private String name; private String destion; //用户 Set<User> users=new HashSet<User>(); //

  • Java实现的二叉树常用操作【前序建树,前中后递归非递归遍历及层序遍历】

    本文实例讲述了Java实现的二叉树常用操作.分享给大家供大家参考,具体如下: import java.util.ArrayDeque; import java.util.Queue; import java.util.Stack; //二叉树的建树,前中后 递归非递归遍历 层序遍历 //Node节点 class Node { int element; Node left; Node right; public Node() { } public Node(int element) { this.

  • 递归之斐波那契数列java的3种方法

    本文实例为大家分享了java递归之斐波那契数列的具体代码,供大家参考,具体内容如下 第一种.普通写法 public class Demo { public static void main(String[] args) { int num1 = 1; int num2 = 1; int num3 = 0; System.out.println(num1); System.out.println(num2); for (int i = 1; i < 10; i++) { num3 = num1 +

  • JAVA递归与非递归实现斐波那契数列

    斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci[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,n∈N*)在现代物理.准晶体结构.化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从1963起

  • java数学归纳法非递归求斐波那契数列的方法

    本文实例讲述了java数学归纳法非递归求斐波那契数列的方法.分享给大家供大家参考.具体如下: Integer能表示的最大值为 2147483647 大概是21.4亿,这里没有考虑溢出情况(当size为983时就会溢出)! import java.util.List; import java.util.ArrayList; /** * @author jxqlovejava * 斐波那契数列 */ public class Fibonacci { public static List<Intege

  • C语言数据结构递归之斐波那契数列

    C语言数据结构递归之斐波那契数列 因为自己对递归还是不太熟练,于是做POJ1753的时候就很吃力,就是翻棋子直到棋盘上所有棋子的颜色一样为止,求最少翻多少次,方法是枚举递归.然后就打算先做另一道递归的题(从数组中取出n个元素的组合),但是同样在递归的问题上不太理解.好吧,于是复习CPP,在第229页的时候,看到了斐波那契数列,回想起之前做过的一道题目,发现可以用递归的方法来做.于是决定优化一下之前的代码. 以下这段摘自<C primer plus> 斐波那契数列的定义如下:第一个和第二个数字都

  • 利用Python实现斐波那契数列的方法实例

    今天我们来使用Python实现递归算法求指定位数的斐波那契数列 首先我们得知道斐波那契数列是什么? 斐波那契数列又叫兔子数列 斐波那契数列就是一个数列从第三项开始第三项的值是第一项和第二项的和依次类推 其次我们再来看递归算法是什么? 递归就是如果函数(子程序)包含了对其自身的调用,该函数就是递归的 话不多说上案例: 第一种方法:不使用递归算法 #首先定义一个新的列表来储存最后的结果 new_list = [] # 然后让用户输入指定位数 my_put = int(input("请输入使用递归算法

  • C#实现变量交换、斐波那契数列、质数、回文方法合集

    目录 交换两个变量的方法 使用C#中的第三个变量交换两个数字 不使用第三个变量交换数字的方法 不使用第三个变量交换字符串的方法 斐波纳奇数列 如何从斐波那契数列中找到第N个斐波那契数列编号? 质数 如何打印两个数字之间的所有质数? 回文(数字与字符串) 如何检查某数字是否属于回文数? 如何检查某字符串是否属于回文? 交换两个变量的方法 使用C#中的第三个变量交换两个数字 int number1=10,number2=20,temp=0; temp=number1; number1=number2

  • 三种java编程方法实现斐波那契数列

    题目要求:编写程序在控制台输出斐波那契数列前20项,每输出5个数换行 //java编程:三种方法实现斐波那契数列 //其一方法: public class Demo2 { // 定义三个变量方法 public static void main(String[] args) { int a = 1, b = 1, c = 0; System.out.println("斐波那契数列前20项为:"); System.out.print(a + "\t" + b + &qu

  • java编程经典案例之基于斐波那契数列解决兔子问题实例

    本文实例讲述了java基于斐波那契数列解决兔子问题.分享给大家供大家参考,具体如下: 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? package com.java.recursion; /** * @描述 三种方法实现斐波那契数列 * @项目名称 Java_DataStruct * @包名 com.java.recursion * @类名 Fibonacci * @author chenli

  • 递归形式与非递归形式的斐波那契数列的用法分析

    复制代码 代码如下: <SPAN style="FONT-SIZE: 32px">采用递归形式和非递归形式实现斐波那契数列</SPAN> 复制代码 代码如下: #include "stdafx.h"#include <iostream>using namespace std;//递归形式的斐波那契数列int fibonacciRecursion(int n){ if (n == 1 || n ==2) {  return 1; }

随机推荐