`
shuofenglxy
  • 浏览: 194489 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

斐波那契序列的基本实现

阅读更多

 

今天实在没事干,刚好别人问了我下斐波那契面试怎么回答。就写了三个最基本的方式来弄吧。

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];
    }
}
 




说明:最基本的递归,就是反应下你对递归的了解程度【终止条件,迭代】。
           栈方式:反应你对递归的理解,函数递归通常都是拿栈来实现的,那当然一般的递归函数你都可以去用栈完成了。
           循环方式:因为上面两种都是非常浪费内存空间,并且做了大量的重复用算。因此,采用另开临时空间标记的方式进行了,这样可以记住前面求过的值。

分享到:
评论

相关推荐

    java实现Fibonacci数列

    通过上述代码示例,我们不仅实现了Fibonacci数列的基本功能,还对比了递归和迭代两种不同的实现方式。递归方法虽然简单易懂,但在实际应用中往往因为效率问题而不被推荐使用。相比之下,迭代方法则更加高效,尤其是...

    递归方法实现斐波那契数列_递归方法实现斐波那契数列_python_源码

    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中斐波那契数列的简单实现方法.docx

    Java中斐波那契数列的简单实现方法 Java中斐波那契数列的简单实现方法是指使用Java语言来实现斐波那契数列的生成。斐波那契数列是指一个数列,其中每一项的值是前两项的和。这个数列有很多实际应用,例如解决兔子生...

    简单K阶斐波那契数列程序

    K阶斐波那契数列的计算可以扩展到更复杂的场景,比如优化算法以处理大数值,或者将其应用于特定的问题,如在图形学中的分形生成、生物信息学中的DNA序列分析,甚至在金融市场的模拟中。在实际应用中,理解并优化算法...

    Fibonacci数列(非递归的函数调用)

    在C++编程中,理解并能够实现斐波那契数列是基本功,它可以帮助开发者掌握迭代、循环控制和高效算法设计等概念。此外,斐波那契数列还常用于测试计算机性能、理解和应用动态规划等问题。 了解和实践非递归的...

    斐波那契数列c++.pdf

    斐波那契数列(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)...

    汇编语言,计算斐波那契数列的前22项,斐波那契数列,分别用两种方法:递归调用,普通循环加法

    首先,让我们了解一下斐波那契数列的基本概念。 斐波那契数列是一个数学上的序列,其中每个数字是前两个数字的和。数列的开始通常是0和1,之后的每一项都是前面两项的和。以数列的形式表示为:0, 1, 1, 2, 3, 5, 8,...

    关于斐波那契数列的性质探讨

    在计算机科学中,斐波那契数列可以用于算法设计,比如斐波那契堆的实现。此外,斐波那契数列还被应用于密码学、图像处理等领域。 #### 结论 综上所述,斐波那契数列作为一种特殊的数列,在数学及其他众多领域都...

    C语言解答经典的数学问题兔子繁衍问题即斐波那契数列问题

    这个经典的数学问题不仅展示了斐波那契数列的基本应用,同时也体现了编程解决问题的逻辑思维。通过迭代或递归方式实现斐波那契数列的计算是计算机科学教育中常见的练习,有助于学生理解和掌握算法以及控制流程的概念...

    斐波那契数列

    斐波那契数列(Fibonacci sequence)是数学中的一个非常著名的数列,指的是这样一个数列:0, 1, 1, 2, 3, 5, 8, 13, 21, …,即第一项为0,第二项为1,从第三项开始每一项都是前两项之和。 **特点:** 1. **递推性*...

    斐波那契数列(c#.net源码).rar

    斐波那契数列的定义是这样的:序列中的每个数字是前两个数字的和,通常以0和1开始,即F(0) = 0,F(1) = 1。之后的每一项F(n)都是前两项F(n-1)和F(n-2)的和,用公式表示就是F(n) = F(n-1) + F(n-2)。数列的初始部分看...

    字符串匹配和斐波那契数列汇编_字符串匹配斐波那契数列汇编语言_

    本文将深入探讨两个重要的概念:字符串匹配和斐波那契数列,并结合汇编语言来阐述其实现。 一、字符串匹配 字符串匹配是计算机科学中的一个基本问题,通常用于查找一个字符串(模式)在另一个字符串(文本)中是否...

    linux多线程程序实验,用不同线程完成一个矩阵乘法,以及子进程计算斐波那契数列,父进程输出结果

    本实验通过创建多个线程,分别用于执行矩阵乘法和计算斐波那契数列,展示了多线程在并发处理不同计算任务中的应用。 一、线程基础 线程是操作系统分配CPU时间的基本单元,一个进程中可以包含一个或多个线程。与进程...

    算法设计实验报告之多种方法求解斐波那契数列

    1. **递推算法**:基于斐波那契数列的定义,即F(n) = F(n-1) + F(n-2),最直观的实现方式是递归。然而,递归算法存在大量的重复计算,效率较低,时间复杂度为O(2^n)。 2. **迭代算法**:为了避免递归中的重复计算,...

    fibonacci数列生成器

    斐波那契数列(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&gt;=2)。这个数列在计算机科学中有许多应用,如算法...

    微机原理实验报告_两数相加_斐波那契数列_微机原理作业/_班级排序_

    在微机原理的背景下,实现斐波那契数列可能涉及到循环结构、递归算法或者动态规划,这些都是编程的基础技能。通过这个实验,学生可以学习到如何用程序解决实际问题,并理解不同计算方法的时间复杂度和空间复杂度。 ...

    斐波那契数列与泰波那契数列的C++实现方法

    内容概要:本文主要讲述了使用C++实现斐波那契数列以及泰波那契数列的方法,通过动态规划的方式解决这一数学难题。文章首先介绍了斐波那契数列及其变体泰波那契数列的基本概念和递推关系,接着深入解释了dp状态方程...

Global site tag (gtag.js) - Google Analytics