`
shuofenglxy
  • 浏览: 189558 次
  • 性别: 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];
    }
}
 




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

分享到:
评论

相关推荐

    斐波那契非递归 C语言源码 大数加法

    C 语言实现的斐波那契数列(fibnacii),非递归方式。斐波拉契数列当输入值大于某个值时,基本的整形变量将无法保存其结果,因此本例使用字符串返回斐波拉契的结果,其中包括用字符串实现的大数加法。

    数据结构与算法

    7.2.2 斐波那契数列 7.2.3 汉诺塔 7.2.4 帕斯卡三角形(杨辉三角) 8 二叉树 8.1 基本概念 8.2 代码实现 8.3 说明 8.4 应用 9 二叉搜索树 9.1 基本概念 9.2 代码实现 9.3 说明 10 AVL树 10.1 ...

    数据结构与算法(C\C++描述)

    7.2.2 斐波那契数列 7.2.3 汉诺塔 7.2.4 帕斯卡三角形(杨辉三角) 8 二叉树 8.1 基本概念 8.2 代码实现 8.3 说明 8.4 应用 9 二叉搜索树 9.1 基本概念 9.2 代码实现 9.3 说明 10 AVL树 10.1 基本概念...

    数据结构与算法分析学习笔记

    6 队列 6.1 基本概念 6.2 代码实现 6.3 应用 7 递归 7.1 基本概念 7.2 应用 7.2.1 阶乘 7.2.2 斐波那契数列 7.2.3 汉诺塔 7.2.4 帕斯卡三角形(杨辉三角) 8 二叉树 8.1 基本概念 8.2 代码实现 8.3 说明 8.4 应用 9 ...

    python-递归算法.docx

    斐波那契数列是一个非常经典的数列,它的定义如下: F(0) = 0 F(1) = 1 F(n) = F(n-1) + F(n-2) (n&gt;=2) python-递归算法全文共3页,当前为第1页。 使用递归算法来计算斐波那契数列的代码如下: python-递归算法全文...

    循环队列应用

    在K_Fib.h文件中K_Fib()函数实现计算并输出K阶斐波那契序列(f0,f1,…,fn),其中该序列最大项fn小于或等于max,而第n+1项大于max。算法要求仅采用空间容量为K的数组实现,请编写代码实现该函数功能。 提示:由于...

    Nth-Fibonacci:在不同的编程语言中查找第 N 个斐波那契数

    第 N 个斐波那契数列 在不同的编程语言中查找第 N 个斐波那契数 关于 斐波那契数列是由简单的线性递推关系定义的整数序列... 想想这个公式不适用的情况(基本情况),并尝试实现一个简单的递归算法,用这个公式找到第 n

    【资源免费下载】Java代码积累丨大话设计模式(Java实现版本)、线程协作

    Java代码加速器 Java代码积累:并发 设计模式 数据结构 使用容器 实用 类 基础知识 ...生成斐波那契数列 使用容器 利用迭代器实现原材料 实用程序 StringUtil类 - 封装常用的String方法 基本的 正则表达式的使用方式

    编译原理简易C编译器

    只能实现斐波那契数列,没有实现pi.c,得分五分 上机大作业——简化C编译器实现 总体要求 一、要求实现的语言特性 1. 基本要求 1数据类型:int,char 2语句:赋值(=),if,while,for;赋值 循环 条件判断 3算术...

    python 实现 数学中经典问题 课程设计 代码

    熵,欧几里得距离,欧几里得最大公约数,欧拉方法,改进欧拉方法,欧拉函数,扩展欧几里得算法,阶乘,因数,费马小定理,斐波那契数列,查找最大值,递归查找最大值,查找最小值,递归查找最小值,下取整,伽马函数...

    leetcode题库-dataStructureForC:考研数据结构基础代码C语言实现

    斐波那契数列 循环队列的基本操作 链队列的基本操作 串 串的顺序存储及基本操作 KMP 树 二叉树的顺序结构 二叉树的链式存储 线索二叉树(待修改) To be continued... 编译乱码: g++ -Wall -fexec-charset=GBK -...

    基于Python实现的一个简单的分布式高并发RPC框架+源代码+文档说明

    &gt; + 客户端请求服务端计算一个整数值的斐波那契数列值,当然也可以自行定义 ### 六、项目的组成部分 -------- 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,...

    Algorithms-and-data-structures---Java:自己根据书C语言版算法数据结构和一些资料,用Java实现其中经典的语法和算法结构

    算法与数据结构---Java版 根据书C语言版算法数据结构和...06 递归、三角数、Fibonacci数列 07 汉诺塔的实现 08 希尔排序 09 快速排序 10 二叉树的基本操作 11 二叉树先序、中序、后序遍历、删除节点 12 ...陆续更新中

    C++基本算法思想之递推算法思想

    递推算法是非常常用的算法思想,在数学计算等场合有着广泛的应用。递推算法适合有明显公式规律的场合。...递推算法示例数学里面的斐波那契数列是一个使用递推算法的经典例子。 13世纪意大利数学家斐波那契的《算盘

    Java-Programs:Java 基础程序,使用 Java8

    ##Java Programs最近一个月学习了一些基本的Java,下面是一些基本的和主流的程序... ######- 使用 For 循环实现斐波那契数列/赫马钱德拉数列和弗洛伊德三角形。 ###### ######-使用While 循环实现数字反转操作。 ######

    leetcode卡-leetcode_solution:leetcode_solution

    leetcode卡 DataWhale编程集训第1期...递归:学习斐波那契数列及递归思想,并最终盲打代码实现斐波那契数列及LeetCode上的Pow(x,n)(不限制语言)!最终打卡方式为:斐波那契数列+递归心得笔记+LeetCode提交结果与代码!

    sword-for-offer:使用Python3用优雅的方式实现《剑指Offer》中的题目

    10 斐波那契数列 11 旋转数组的最小数字 12 矩阵中的路径 13 机器人的运动范围 14 剪绳子 15 二进制中1的个数 第3章 高质量的代码 3.3 代码的完整性 16 数值的整数次方 17 打印从1到最大的n位数 18 删除链表中的节点...

    angular-challenge:分叉此存储库并将您的解决方案发送给我们

    斐波那契数列是一个整数序列,通常用于需要增加序列数的地方,例如登录节流或编码采访问题( :grinning_face_with_smiling_eyes: )。 正式将其定义为: fib(n) = fib(n-1) + fib(n-2) 在本练习中,我们将使用...

    编译原理 C编译器

    可将C语言的裴波纳契和pi.c的翻译为汇编语言。...3编译器演示程序,可将C语言子集测试程序编译为目标代码——汇编程序,用汇编器转换为二进制程序后运行无误,如斐波那契数列程序,应能翻译为正确的汇编程序。

    matlab不运行一段代码-fast-fourier-transform:快速傅立叶变换的各种语言的简单实现

    我一直尝试使用的算法包括:斐波那契数列,阶乘,快速排序,骑士之轮,河内之塔,快速傅立叶变换等。 由于我是一名电子工程师,接受过计算机和电信行业的严格培训,因此我选择了FFT进行更详细的研究。 这里的每个...

Global site tag (gtag.js) - Google Analytics