用java实现斐波那契数列的几种方式的总结

数学历史上有个很经典的斐波那契数列。。。

 

斐波那契数列是什么?  

 

1,1,2,3,5,8,13。。。

这个就是斐波那契数列。

今天面试被问到了斐波那契数列的实现方式。现在写下这个实现方式,总结下。。

 

通过简单分析数列,我们能直观得出规律,每个数列是前2个数的和,用数学表达式来说就是  ni = n(i-1) +n(i-1)(注意,这里的i是下标,不是相乘)

 

有这个规律,我们就能开始代码了。 

第一种方式。

 

@Test
	public void Tester1() {
		int a =1;
		int b = 1;
		int c = 0;
		System.out.print(a+"\n"+b+"\n");
		for (int i = 3; i < 20; i++) {
			c = a +b;
			a = b;
			b = c;
			System.out.println(c);
		}
	}

运行输出的结果为正确的斐波那契数列

 

第二种实现方式:

 

@Test
	public void Tester2() {
		int a =1;
		int b = 1;
		for (int i = 0; i < 20; i++) {
			System.out.println(a+"\n"+b+"\n");
			a = a+b;
			b = a+b;
		}
	}

第三种实现方式:

 

@Test
	public void Tester3() {
		int[] intArray = new int[10];
		intArray[0] = 1;
		intArray[1] = 1;
		for (int i = 0; i < intArray.length; i++) {
			if (i>1) {
				intArray[i] = intArray[i-1]+intArray[i-2];
			}
			System.out.println(intArray[i]+"\t");
		}
	}

简单总结下: 个人感觉中间关键的地方在于 处理前后2个值的关系上, 比如说我们直接打印第一第二个值,1和1 , 那么从第三个开始, 就是2, 然后第四个值就是第三个加上第二个的和,也就是 1+2 等于3, 依此类推。结果就出来了。 

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 可以使用以下代码实现斐波那契数列:public class FibonacciExample1 { public static void main(String args[]) { int n1=0,n2=1,n3,i,count=10; System.out.print(n1+" "+n2);//printing 0 and 1 for(i=2;i<count;++i)//loop starts from 2 because 0 and 1 are already printed { n3=n1+n2; System.out.print(" "+n3); n1=n2; n2=n3; } } } ### 回答2: 斐波那契数列是一个经典的数学问题,可以使用Java编程语言来实现。下面是用Java编写斐波那契数列的代码示例: ```java public class Fibonacci { public static void main(String[] args) { int n = 10; // 斐波那契数列长度 System.out.println("斐波那契数列的前" + n + "个数字是:"); // 调用函数打印斐波那契数列 printFibonacciSequence(n); } public static void printFibonacciSequence(int n) { int first = 0; // 第一个数字 int second = 1; // 第二个数字 System.out.print(first + " " + second + " "); // 打印前两个数字 for (int i = 2; i < n; i++) { int next = first + second; // 计算下一个数字 System.out.print(next + " "); // 打印下一个数字 // 更新第一个数字和第二个数字 first = second; second = next; } } } ``` 以上代码中,首先定义了一个`printFibonacciSequence`方法,用于打印斐波那契数列的前n个数字。然后在主函数中,定义了一个变量n表示需要打印的斐波那契数列长度。最后,调用`printFibonacciSequence`方法来打印斐波那契数列。 在运行代码时,将会输出斐波那契数列的前10个数字。 值得注意的是,斐波那契数列的每个数字是由前两个数字相加得到的。所以我们需要通过两个变量`first`和`second`来保存当前的两个数字,并计算出下一个数字。循环迭代n次,即可打印出斐波那契数列的前n个数字。 ### 回答3: 斐波那契数列是指每个数字都是前两个数字之和的数列,它的前几项是0、1、1、2、3、5、8、13……。 要用Java编写斐波那契数列,可以使用递归或循环的方法。下面我将分别介绍这两种方法。 1. 递归方法: 递归是一种函数调用自身的方法。对于斐波那契数列,可以使用递归函数来实现。 首先,定义一个递归函数fibonacci,接收一个整数n作为参数,表示要计算第n个斐波那契数。 如果n为0或1,直接返回n; 如果n大于1,调用fibonacci函数分别计算第n-1个和第n-2个斐波那契数,并返回它们的和。 具体的实现代码如下: ``` public static int fibonacci(int n) { if (n <= 1) { return n; } else { return fibonacci(n - 1) + fibonacci(n - 2); } } ``` 使用上述代码可以计算任意第n个斐波那契数,调用方式为fibonacci(n),返回值为第n个斐波那契数。 2. 循环方法: 除了递归,我们还可以使用循环来计算斐波那契数列。通过迭代计算,从初始值开始,逐步计算每一项。 首先,定义两个变量a和b,分别表示斐波那契数列的前两个数,初始值为0和1。 然后,使用循环从第3个数开始,更新a和b的值,每次更新后a为原来的b,b为a和b的和。 具体的实现代码如下: ``` public static int fibonacci(int n) { if (n < 2) { return n; } else { int a = 0, b = 1; for (int i = 2; i <= n; i++) { int temp = a + b; a = b; b = temp; } return b; } } ``` 上述代码也可以计算任意第n个斐波那契数,调用方式为fibonacci(n),返回值为第n个斐波那契数。 使用递归方法的效率相对较低,因为会存在重复计算的问题。而使用循环方法可以避免这个问题,更加高效。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值