`

Re: ruby 写的求fib数的性能问题

阅读更多
<layer style="background-color: Fuchsia; color: black;" id="google-toolbar-hilite-0">ruby</layer> 代码
 
  1. def fib(n)    
  2.   fib_iter(n, 1, 0)    
  3. end    
  4. def fib_iter(n,i, j)    
  5.   return i if n==1  
  6.   fib_iter(n-1, i + j, i)    
  7. end   

这个尾递归版本,fib(10000)仍然可以计算,再增加一个数量级就栈溢出了
分享到:
评论

相关推荐

    fib.rar_斐波那契_求斐波那契数

    题目中提到的“fib.rar”压缩包文件包含了关于如何用递归方式计算斐波那契数列第24项的实现,即求F(24)。 在编程中,递归是一种解决问题的方法,它会定义一个函数或过程,该函数或过程通过调用自身来解决问题。在...

    evaluator:PRO2 de FIB产品

    评估人员:程序问题的平台FIB PRO2 de la'signsignatura de PRO2 de la FIB。 Los comandos aceptados se描述为一种连续性。 Todo ellos se presentan en dos版本,没有Con nombre的完整版本,也没有其他contra ...

    汇编求Fibonacci数的源程序

    在提供的"求Fibonacci数程序设计任务书1.doc"中,可能会包含更具体的任务说明、设计要求以及评估标准,帮助学习者更好地理解和完成项目。而"www.pudn.com.txt"可能是一个链接或者资源引用,用于获取更多的汇编语言...

    fib:Github顶级语言的性能基准

    在Github上使用顶级语言进行递归斐波那契基准测试 前10名:JavaScript,Java,Python,Ruby,Php,C ++,C#,C,... fib(n - 1) + fib(n - 2) end puts fib(46) 这是Crystal版本: def fib(n : UInt64) return 1_u6

    fib.rar_fib_fib 汇编语言_汇编_汇编 fib

    end_fib: ; ... 输出结果或执行其他操作 ... ``` 在这个例子中,程序首先初始化EAX和EBX为斐波那契数列的前两项,然后通过循环计算后续项。由于汇编语言的特性,我们可以直接控制计算过程,确保高效运行。 通过...

    pastermind:编程项目(FIB-UPC)2017年秋季

    【标题】"pastermind:编程项目(FIB-UPC)2017年秋季"涉及的是一个基于Java的编程挑战,源自2017年秋季在FIB(巴塞罗那技术大学计算机科学学院)的教学活动。Pastermind项目可能是一个教学实践,旨在帮助学生提升其...

    汇编实现fib函数,fib(1)=fib(2)=1;fib(n)=fib(n-2)+fib(n-1)

    本人自己用汇编写的,输入的时候请输入数字,因为没有加输入字母的处理程序

    高性能路由器FIB压缩方法.pdf

    FIB聚合的概念是将具有相同下一跳的多个路由条目归并为单一的条目,从而减少FIB表的总行数。例如,两个连续地址空间的路由前缀可以聚合为一个更大的路由前缀。 具体实现时,首先通过路由协议如BGP或IGP获得路由条目...

    linux forward的实现 Linux IP数据流 FIB

    8. **性能优化**:为了提高转发效率,Linux内核使用了如Netfilter、conntrack等机制,缓存连接状态,减少对路由表的查询次数。 深入理解Linux Forwarding和FIB,对于网络管理员和系统工程师来说至关重要,它可以...

    fib.rar_fib

    标题中的“fib.rar_fib”和描述中提到的“Fib数列”指的是著名的斐波那契数列(Fibonacci sequence)。斐波那契数列是一个数学上的数列,由意大利数学家列奥纳多·斐波那契在解决兔子繁殖问题时引入。数列的定义是...

    递归方法求斐波那契函数FIB(N).pdf

    递归方法求斐波那契函数 FIB(N) 是一款基于汇编语言的课程设计项目,旨在加深对汇编语言理论和基本知识的理解,掌握 DOS 和 BIOS 系统功能调用,并提高分析问题和解决问题的能力。 该项目的主要目的是使用递归方法...

    Fib.rar_fib

    标题"Fib.rar_fib"指的是一个关于斐波那契数列的C++程序集合,而“Fib”标签进一步确认了这一点。斐波那契数列是一个在计算机科学和数学中非常基础且重要的概念,它定义了一串数字序列,其中每个数字是前两个数字的...

    fib.rar_FIB如何计算_Fibonacci

    对于50以内的斐波那契数,虽然递归方法可以工作,但当数值更大时,可能会遇到栈溢出或者性能问题。 递归方法的基本思路是定义两个函数(或子程序):一个用于返回第n个斐波那契数,另一个用于返回第n-1个斐波那契数...

    Fib_dynamicprogramming_

    标题"Fib_dynamicprogramming_"表明我们将探讨使用动态规划解决斐波那契数列问题。斐波那契数列是计算机科学中的一个经典例子,其定义是:每个数是前两个数的和,通常以0和1开始,即F(0) = 0,F(1) = 1,对于n &gt; 1,...

    Fibonacci:程序取一个整数,并打印出斐波那契数列的那一项

    此外,斐波那契数列在计算机科学中常用于测试算法效率、理解递归、生成伪随机数,甚至在解决实际问题如计算黄金分割比例等方面都有所应用。了解和掌握如何生成斐波那契数列是每个程序员的基础技能之一。 在提供的...

    fib_semantics.rar_semantics

    8. **性能优化**:理解和优化FIB的语义对于提高网络性能至关重要,包括减少查找时间、优化内存使用和提升转发效率。 压缩文件“fib_semantics.c”可能包含C语言编写的代码示例,用于解释或实现FIB的某些功能,可能...

    Ruby语言教程及案例.docx

    ### Ruby语言教程及案例知识点详解 #### 一、Ruby简介 **Ruby** 是一种简洁而强大的面向对象编程语言,以其清晰的语法和丰富的内置功能著称。它支持多种编程范式,包括面向对象编程(OOP)、命令式编程以及函数式...

    fib:递归斐波那契基准-多种语言

    目的是通过试用部门基准检查语言和平台之间的性能是否表现出与我的素养相同的方式。 可以解决问题,但会添加其他方法(例如迭代器)进行比较。 这是递归的Ruby版本: def fib(n) return 1 if n &lt;= 1 fib(n - 1...

    fib数列生成器

    产生第N为fib数列,高精度,缺点是占内存,没解决内存泄漏问题

    基础算法-python斐波那契数列的四种方法

    return fib_recur(n-1) + fib_recur(n-2) for i in range(1, 20): print(fib_recur(i), end=' ') # 2、递推法 def fib_loop_for(n): a, b = 0, 1 for _ in range(n): a, b = b, a + b return a def ...

Global site tag (gtag.js) - Google Analytics