递归和迭代的区别
递归:
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
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步