如何用java语言输出斐波那契数列
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用java语言输出斐波那契数列相关的知识,希望对你有一定的参考价值。
Java编程:三种方法实现斐波那契数列
其一方法:
// 定义三个变量方法
public static void main(String[] args)
int a = 1, b = 1, c = 0;
System.out.println("斐波那契数列前20项为:");
System.out.print(a + "\\t" + b + "\\t");
//因为前面还有两个1、1 所以i<=18
for (int i = 1; i <= 18; i++)
c = a + b;
a = b;
b = c;
System.out.print(c + "\\t");
if ((i + 2) % 5 == 0)
System.out.println();
java编程:三种方法实现斐波那契数列
其二方法:
// 定义数组方法
public static void main(String[] args)
int arr[] = new int[20];
arr[0] = arr[1] = 1;
for (int i = 2; i < arr.length; i++)
arr[i] = arr[i - 1] + arr[i - 2];
System.out.println("斐波那契数列的前20项如下所示:");
for (int i = 0; i < arr.length; i++)
if (i % 5 == 0)
System.out.println();
System.out.print(arr[i] + "\\t");
Java编程:三种方法实现斐波那契数列
其三方法:
// 使用递归方法
private static int getFibo(int i)
if (i == 1 || i == 2)
return 1;
else
return getFibo(i - 1) + getFibo(i - 2);
public static void main(String[] args)
System.out.println("斐波那契数列的前20项为:");
for (int j = 1; j <= 20; j++)
System.out.print(getFibo(j) + "\\t");
if (j % 5 == 0)
System.out.println();
同一道题用各种不同的思路去思考解决,也是对知识综合运用的锻炼。
参考技术A /*** Created by admin on 2017/6/21.
*/
public class Fibonacci
/**
* 输出指定个数的斐波那契数列
*
* @param n
*/
public static void printFibonacci(int n)
int[] init = 1, 1;
int last2 = 1;
int last = 1;
for (int i = 0; i < n; i++)
if (i < init.length)
System.out.print(" " + init[i]);
else
System.out.print(" " + (last2 + last));
int tmp = last;
last = last2 + last;
last2 = tmp;
System.out.println();
public static void main(String args[])
printFibonacci(3);
printFibonacci(7);
printFibonacci(15);
参考技术B import java.math.BigInteger; //导入BigInteger数组
import java.util.Scanner; //导入 java.util 包下的 Scanner 类
public class Fibonacci //创建一个Fibonacci 类
public static void main(String[] args) //主方法
System.out.println("Please input numbers of fibonacci sequence:"); //打印输出信息,换行
Scanner scan = new Scanner(System.in); //对输入流进行封装
//使用Scanner类创建一个对象scan,调用下列方法,读取用户在命令行输入的数据类型
try //可能产生异常的代码段
int num=scan.nextInt(); //接收一个从控制台输入的整数
BigInteger firstNum = BigInteger.ONE;
BigInteger secondNum = BigInteger.ONE;
BigInteger result = BigInteger.ZERO;
for (int i = 0; i < num; i++)
if (i == 0 || i == 1)
result = BigInteger.ONE;
else
result = secondNum.add(firstNum); //secondNum和firstNum做加法运算
firstNum = secondNum;
secondNum = result;
System.out.print(result + " ");
catch (Exception e) //捕获的异常类型
System.out.println("Please input valid number!");
参考技术C import java.util.Scanner;
public class Fibonacci
public static void main(String[] args)
Scanner sc = new Scanner(System.in);
System.out.println("请输入要打印前多少项的斐波那契数列");
int n = sc.nextInt();
printFibonacci(n);
static void printFibonacci(int n)
int firstNum = 1;
int secNum = 1;
if(n>=1)
System.out.print(firstNum+" ");
if(n>=2)
System.out.print(secNum+" ");
for(int i=3;i<=n;i++)
int temp = firstNum+secNum;
System.out.print(temp+" ");
firstNum = secNum;
secNum = temp;
直接给你参考代码吧,有问题请追问
参考技术D具体代码如下:
public class Test
public int fib(int n)
if(n==1 || n==2)//当n=1或2时 返回1
return 1;
return fib(n-1)+fib(n-2);//返回前两项的和
public static void main(String[] args)
Test t = new Test();
for (int i = 1; i <= 15; i++)
System.out.printf ("fib(%d)=%d\\n",i,t.fib(i));
运行结果:
fib(1)=1
fib(2)=1
fib(3)=2
fib(4)=3
fib(5)=5
fib(6)=8
fib(7)=13
fib(8)=21
fib(9)=34
fib(10)=55
fib(11)=89
fib(12)=144
fib(13)=233
fib(14)=377
fib(15)=610
一天一门编程语言使用汇编语言实现斐波那契数列
文章目录
使用汇编语言实现斐波那契数列
一、什么是斐波那契数列
斐波那契数列(Fibonacci Sequence),又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递归的方法定义:
F(0) = 0
F(1) = 1
F(n) = F(n-1) + F(n-2)
二、如何用汇编语言实现斐波那契数列
- 准备好汇编环境,例如 MASM(微软汇编)或者 NASM(网络汇编)等;
- 定义需要的变量,例如:
n DWORD ? ; 定义一个 DWORD 变量,用于存储斐波那契数列的项数
f1 DWORD ? ; 定义一个 DWORD 变量,用于存储斐波那契数列的第一项
f2 DWORD ? ; 定义一个 DWORD 变量,用于存储斐波那契数列的第二项
f3 DWORD ? ; 定义一个 DWORD 变量,用于存储斐波那契数列的第三项
- 编写代码,实现斐波那契数列:
MOV f1, 0 ; 把斐波那契数列的第一项赋值为 0
MOV f2, 1 ; 把斐波那契数列的第二项赋值为 1
MOV n, 10 ; 把斐波那契数列的项数赋值为 10
MOV eax, f1 ; 把斐波那契数列的第一项存入 eax 寄存器
MOV edx, f2 ; 把斐波那契数列的第二项存入 edx 寄存器
LOOP_START:
MOV f3, eax ; 把斐波那契数列的第一项存入 f3 寄存器
ADD f3, edx ; 把斐波那契数列的第二项与 f3 相加,得到斐波那契数列的第三项
MOV eax, edx ; 把斐波那契数列的第二项存入 eax 寄存器
MOV edx, f3 ; 把斐波那契数列的第三项存入 edx 寄存器
DEC n ; 把斐波那契数列的项数 n 减 1
CMP n, 0 ; 比较斐波那契数列的项数 n 是否为 0
JNE LOOP_START ; 如果 n 不为 0,则重新跳转回 LOOP_START
- 编译代码,生成可执行文件;
- 运行可执行文件,查看结果。
一、汇编语言概念
1.1 什么是汇编语言
汇编语言是一种低级语言,它可以表达极少的语句,但这些语句可以被机器(如 CPU)识别和执行。机器语言和汇编语言之间存在着相互转换的关系,有了汇编语言,程序员可以更轻松的编写和维护机器语言。
1.2 汇编语言的特点
- 汇编语言是一种汇编的编程语言,能够将高级语言翻译成可以被机器识别的指令代码。
- 汇编语言运行速度比高级语言快得多,汇编语言程序可以更快地完成任务。
- 汇编语言拥有更多的硬件访问指令,可以更好地操控硬件资源。
二、汇编语言指令
2.1 简单指令
下面是一个简单指令的例子:
mov ax, 0x1234 ;将0x1234赋值给ax
上面的指令表示将16进制数0x1234赋值给ax寄存器,mov是一个移动指令,表示将第二个参数(0x1234)移动到第一个参数(ax)。
2.2 复杂指令
汇编语言也可以使用复杂的指令,比如:
mov ax, 0x1234 ;将0x1234赋值给ax
add ax, 0x4000 ;将0x4000加到ax
mov bx, 0x1000 ;将0x1000赋值给bx
sub bx, 0x2000 ;从bx减去0x2000
上面的指令表示将16进制数0x1234赋值给ax寄存器,并将0x4000加到ax寄存器,将16进制数0x1000赋值给bx寄存器,从bx减去0x2000。
汇编语言程序结构
汇编语言程序一般包含两部分:
- 数据段:用于定义程序中使用的各种变量;
- 代码段:用于定义程序的执行过程。
代码实例
.data
var1: .word 8
var2: .word 9
.text
li t0, var1
li t1, var2
add t2, t0, t1
sw t2, var3
指令集
常用指令
汇编语言有大量的指令,常用的有:
li
:Load Immediate,将立即数加载到寄存器;add
:Add,寄存器之间的加法运算;sw
:Store Word,将寄存器内容存入内存。
指令代码实例
.data
var1: .word 8
var2: .word 9
.text
li t0, var1
li t1, var2
add t2, t0, t1
sw t2, var3
上面的代码实例中,使用了li
、add
、sw
三条指令。
其中:
li t0, var1
表示将var1
的值(8)加载到t0
寄存器;li t1, var2
表示将var2
的值(9)加载到t1
寄存器;add t2, t0, t1
表示将t0
和t1
相加,结果存入t2
寄存器;sw t2, var3
表示将t2
寄存器的值(17)存入var3
变量中。
以上是关于如何用java语言输出斐波那契数列的主要内容,如果未能解决你的问题,请参考以下文章