今天实在没事干,刚好别人问了我下斐波那契面试怎么回答。就写了三个最基本的方式来弄吧。
import java.util.Stack;
public class StackAndRechurisive {
public static void main(String[] args){
int n = 8;
System.out.println(StackMethod(n));
System.out.println(ForMethod(n));
System.out.println(Fac(n));
}
public static double Fac(int n){
if(n==0)
return 1;
else if(n==1)
return 1;
else
return Fac(n-1)+Fac(n-2);
}
public static double StackMethod(int n){
if(n==0)
return 1;
if(n==1)
return 1;
Stack<Integer> stack = new Stack<Integer>();
int result=0,temp=0;
if(n>=2){
stack.push(n-1);
stack.push(n-2);
n--;
}
while(stack.size()>0){
temp = stack.pop();
if(temp==0)
result+=1;
else if(temp==1)
result+=1;
else{
stack.push(temp-1);
stack.push(temp-2);
}
}
return result;
}
public static double ForMethod(int n){
double[] array = new double[n+1];
array[0]=1;
array[1]=1;
for(int i=2;i<=n;i++)
array[i]= array[i-1]+array[i-2];
return array[n];
}
}
说明:最基本的递归,就是反应下你对递归的了解程度【终止条件,迭代】。
栈方式:反应你对递归的理解,函数递归通常都是拿栈来实现的,那当然一般的递归函数你都可以去用栈完成了。
循环方式:因为上面两种都是非常浪费内存空间,并且做了大量的重复用算。因此,采用另开临时空间标记的方式进行了,这样可以记住前面求过的值。
分享到:
相关推荐
通过上述代码示例,我们不仅实现了Fibonacci数列的基本功能,还对比了递归和迭代两种不同的实现方式。递归方法虽然简单易懂,但在实际应用中往往因为效率问题而不被推荐使用。相比之下,迭代方法则更加高效,尤其是...
Python中递归实现斐波那契数列的基本代码如下: ```python def fibonacci(n): if n print("输入错误,n应大于0") elif n == 1 or n == 2: return 1 else: return fibonacci(n-1) + fibonacci(n-2) ``` 这个...
Java中斐波那契数列的简单实现方法 Java中斐波那契数列的简单实现方法是指使用Java语言来实现斐波那契数列的生成。斐波那契数列是指一个数列,其中每一项的值是前两项的和。这个数列有很多实际应用,例如解决兔子生...
K阶斐波那契数列的计算可以扩展到更复杂的场景,比如优化算法以处理大数值,或者将其应用于特定的问题,如在图形学中的分形生成、生物信息学中的DNA序列分析,甚至在金融市场的模拟中。在实际应用中,理解并优化算法...
在C++编程中,理解并能够实现斐波那契数列是基本功,它可以帮助开发者掌握迭代、循环控制和高效算法设计等概念。此外,斐波那契数列还常用于测试计算机性能、理解和应用动态规划等问题。 了解和实践非递归的...
斐波那契数列(Fibonacci sequence),也被称为黄金分割数列,是由意大利数学家列昂纳多·斐波那契(Leonardo Fibonacci)在13世纪提出的一个经典数学序列。这个数列的基本定义是从第3项开始,每一项都是前两项的和...
斐波那契数列(Fibonacci sequence)是这样一个数列:0, 1, 1, 2, 3, 5, 8, 13, 21, ...。该数列从第三项开始,每一项都等于前两项之和。数学上,斐波那契数列可以这样定义: - F(0) = 0 - F(1) = 1 - F(n) = F(n-1)...
首先,让我们了解一下斐波那契数列的基本概念。 斐波那契数列是一个数学上的序列,其中每个数字是前两个数字的和。数列的开始通常是0和1,之后的每一项都是前面两项的和。以数列的形式表示为:0, 1, 1, 2, 3, 5, 8,...
在计算机科学中,斐波那契数列可以用于算法设计,比如斐波那契堆的实现。此外,斐波那契数列还被应用于密码学、图像处理等领域。 #### 结论 综上所述,斐波那契数列作为一种特殊的数列,在数学及其他众多领域都...
通达信指标文档所描述的基于斐波那契数列的指标,着重于将这一数学序列与指数移动平均线(EMA)相结合。EMA12和EMA50作为两个重要的时间窗口,通过它们的交叉点来预测股票价格的趋势。当短期的EMA12从下方穿过长期的...
递归算法将斐波那契数列的计算问题转化为函数自身的多次调用,直至达到基本情况(Fi = 1)。这种算法的代码简洁易懂,但其效率低下的问题不容忽视。由于递归方法存在大量重复计算,当序列项数n较大时,计算时间急剧...
斐波那契数列(Fibonacci sequence)是数学中的一个非常著名的数列,指的是这样一个数列:0, 1, 1, 2, 3, 5, 8, 13, 21, …,即第一项为0,第二项为1,从第三项开始每一项都是前两项之和。 **特点:** 1. **递推性*...
斐波那契数列的定义是这样的:序列中的每个数字是前两个数字的和,通常以0和1开始,即F(0) = 0,F(1) = 1。之后的每一项F(n)都是前两项F(n-1)和F(n-2)的和,用公式表示就是F(n) = F(n-1) + F(n-2)。数列的初始部分看...
本文将深入探讨两个重要的概念:字符串匹配和斐波那契数列,并结合汇编语言来阐述其实现。 一、字符串匹配 字符串匹配是计算机科学中的一个基本问题,通常用于查找一个字符串(模式)在另一个字符串(文本)中是否...
本实验通过创建多个线程,分别用于执行矩阵乘法和计算斐波那契数列,展示了多线程在并发处理不同计算任务中的应用。 一、线程基础 线程是操作系统分配CPU时间的基本单元,一个进程中可以包含一个或多个线程。与进程...
1. **递推算法**:基于斐波那契数列的定义,即F(n) = F(n-1) + F(n-2),最直观的实现方式是递归。然而,递归算法存在大量的重复计算,效率较低,时间复杂度为O(2^n)。 2. **迭代算法**:为了避免递归中的重复计算,...
斐波那契数列(Fibonacci sequence)是数学领域中的一个重要概念,它在计算机...总之,理解并能实现斐波那契数列生成器是每个程序员的基本技能之一,它不仅可以深化对递归和迭代的理解,还能在实际应用中发挥重要作用。
斐波那契数列是一个数学序列,其中每个数字是前两个数字的和,通常以0和1开始:0, 1, 1, 2, 3, 5, 8, 13, ...。在编程中,当斐波那契数达到一定大小时,可能会导致整数溢出,因为超过了数据类型的限制。 描述中的...
斐波那契数列是一个非常经典的数学序列,其定义如下:第0项是0,第1项是1,从第2项开始,每一项都等于前两项之和。即F(0) = 0,F(1) = 1,F(n) = F(n-1) + F(n-2) (n>=2)。这个数列在计算机科学中有许多应用,如算法...
在微机原理的背景下,实现斐波那契数列可能涉及到循环结构、递归算法或者动态规划,这些都是编程的基础技能。通过这个实验,学生可以学习到如何用程序解决实际问题,并理解不同计算方法的时间复杂度和空间复杂度。 ...