递归和迭代的区别

本文探讨了递归和迭代的概念及应用。递归经典案例包括斐波那契数列、阶乘、汉诺塔、全排列和图示;而迭代同样用于斐波那契数列、汉诺塔和背包问题。递归是函数调用自身,有明确的终止条件,而迭代是根据递推公式更新变量。在效率上,迭代通常优于递归,特别是在大规模计算时。
摘要由CSDN通过智能技术生成

最近做一些题经常会碰到迭代的方法解的,或者递归解法,容易搞混,特在此整理一下
一.递归:
由例子引出,先看看递归的经典案例都有哪些
1.斐波那契数列
斐波纳契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……
这个数列从第三项开始,每一项都等于前两项之和。
2.
阶乘 n! = n * (n-1) * (n-2) * …* 1(n>0)
3.汉诺塔问题

4.全排列
从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。
如1,2,3三个元素的全排列为:
1,2,3
1,3,2
2,1,3
2,3,1
3,1,2
3,2,1
5. 两张有意思的图


现在就算说不出定义也能理解什么是递归了


递归到底是个啥

递归,就是在运行的过程中调用自己。
构成递归需具备的条件:
1. 子问题须与原始问题为同样的事,且更为简单;
2. 不能无限制地调用本身,须有个出口,化简为非递归状况处理。

二.迭代
迭代的经典例子
1.斐波那契数列(没错,又是我)
2.汉诺塔问题(这不巧了么)
3.背包问题
有N件物品和一个容量为V的背包。第i件物品的重量是w[i],价值是v[i]。求解将哪些物品装入背包可使这些物品的重量总和不超过背包容量,且价值总和最大。基本思路
这是

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值