Ruby-递归和尾递归
递归和迭代的区别
递归:
1)递归就是在过程或函数里面调用自身;
2)在使用递归时,必须有一个明确的递归结束条件,称为递归出口.
迭代:
利用变量的原值推算出变量的一个新值.如果递归是自己调用自己的话,迭代就是A不停的调用B.
1、斐波那契 1 1 2 3 5 8
递归算法
def fibo1(n)
if n==1 or n==2
return 1;
end
fibo1(n-1)+fibo1(n-2)
end
puts fibo1(6);
尾递归,把每次得出的结果带入下次的运算,和迭代很像。
def fibo2(n,g,k)
puts k
a=k
k=g+k
g=a
if n==1
return k
end
fibo2(n-1,g,k)
end
puts fibo2(5,0,1)
迭代
def fibo3(n)
j,k=0,1
puts j
puts k
for i in 1..n
a=k
k=j+k
j=a
puts k
end
end
2、阶乘
尾递归
def fact(n,g)
if n==0
return g;
end
fact(n-1,n*g)
end
Ruby-递归和尾递归的更多相关文章
- 递归与尾递归(C语言)
原文:递归与尾递归(C语言)[转] 作者:archimedes 出处:http://www.cnblogs.com/archimedes/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留 ...
- JAVA中使用递归和尾递归实现1000的阶乘的比较
在JAVA中求阶乘首先遇到的问题就是结果溢出,不管是使用int还是long,double都无法表示1000!这么大的天文数字,这里暂且用BigInteger解决这个问题! 下面是使用递归和尾递归分别计 ...
- day13-Python运维开发基础(递归与尾递归)
递归与尾递归 # ### 递归函数 """ 递归函数: 自己调用自己的函数 递:去 归:回 有去有回是递归 """ # 简单递归 def d ...
- 递归、尾递归和使用Stream延迟计算优化尾递归
我们在学数据结构的时候必然会接触栈(Stack),而栈有一个重要的应用是在程序设计语言中实现递归.递归用途十分广泛,比如我们常见的阶乘,如下代码: 1234 public static int (in ...
- 递归与尾递归(C语言)【转】
作者:archimedes 出处:http://www.cnblogs.com/archimedes/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原 ...
- 【Python学习之四】递归与尾递归
看完廖雪峰老师的教程,感觉尾递归函数是一个相对难点.于是复习一下,思考了一下,发表一些见解,记录一下. 1.递归函数 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数 ...
- Java 递归、尾递归、非递归、栈 处理 三角数问题
import java.io.BufferedReader; import java.io.InputStreamReader; //1,3,6,10,15...n 三角数 /* * # 1 * ## ...
- Java 递归、尾递归、非递归 处理阶乘问题
n!=n*(n-1)! import java.io.BufferedReader; import java.io.InputStreamReader; /** * n的阶乘,即n! (n*(n-1) ...
- Python实现斐波那契递归和尾递归计算
##斐波那契递归测试 def fibonacciRecursive(deepth): if deepth == 1: return 1 elif deepth == 2: return 1 else: ...
- python: 函数递归与尾递归
如果一个函数在内部调用自己,那么这个函数就是递归函数. 例如一个阶乘函数:fact(n)=n! ,其实可以写成 fact(n)=n x fact(n-1). fact(n) 以递归的方式可以表示为: ...
随机推荐
- <页面里折合与打开>
主要思想是:通过覆盖,显示的方式.visible 为 true与false,id以及function函数中参数的不同. 具体代码如下: <script type="text/javas ...
- Spring in action - 会话管理
传统的会话管理是用一个session表保存会话信息,每次请求时读取.写入该表. public function read($sessID) { $hander = is_array($this-> ...
- Codeforces 732D [二分 ][贪心]
/* 不要低头,不要放弃,不要气馁,不要慌张 题意: n天进行m科考试,每科考试需要a的复习时间,n天每天最多可以考一科.并且指定哪天考哪科. 注意考试那天不能复习. 问最少需要多少天可全部通过考试. ...
- Why is Visual Studio 2015 not able to find or open PDB files?
first change parameters, Tools->Options->Debugging->Symbols->Microsoft Symbol Server, ye ...
- 如何让CCLayer创造的地图,左右滑动不出现黑边
在都是scale为1的情况下,效果图如下: , 绿色的是Screen,它的大小和坐标不变,可以理解为CCScene,下面两个就是用CCLayer的地图,有2个Layer,深颜色的就是和Scrren一样 ...
- EF4.1使用
EF分为三类: db first:首先建立数据库,然后通过ADO.Net Entity Data Model项目建立.edmx文件,这是一个xml文件主要作用就是映射类和数据表 model first ...
- U盘centos7系统安装http://www.augsky.com/599.html
修改第二步中按TAB键出来的命令 这里注意了:网上很多文章都说这一步改成">vmlinuz initrd=initrd.img inst.stage2=hd:/dev/sdbquiet ...
- Django快速学习搭建blog项目
新手学习Django,本文学习的文档是<Django Web开发指南>.好了我也是新手,没什么好说了,go!- 首先先确定环境,我是在linux(Ubuntu14.04 gnome)下. ...
- Javascript BOM对象
BOM是browser object model的缩写,简称浏览器对象模型. window对象(BOM的核心对象) 表示浏览器的一个实例,在浏览器中,window对象有着双重角色,它既是通过Javas ...
- Take advantage of “Integrated Calling” to know whom suspect talked to
A new feature in iOS 10 is "Integrated Calling". An integrated call from Chat App like Nav ...