递归和迭代的区别
递归:
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
时间: 2024-10-08 00:09:50