递归与迭代的区别
来源:互联网 发布:有抢购软件吗 编辑:程序博客网 时间:2024/05/17 22:16
递归指一个函数(或者一个过程)引用他自身。想学会递归,你先要学会递归…… <--不好意思这是个错误示范,因为这个过程要调用自身无限次并导致爆栈。
迭代指重复地将一个函数输出的结果作为输入再启动这个函数,你会很明显看到代码中有循环。
例如,用两种方法实现阶乘功能。
递归写法:
int f(int n)
{
if (n==1) return 1;
else return f(n-1)*n; //递归
}
迭代写法:
int f(int n)
{
int result = 1;
for(int k=1;k<=n;++k)
result = result * k;//迭代
return result;
}
更多时候,两者各有使用领域,并不能互相替代。
递归允许在函数里多次引用自身,例如快速排序算法要用递归来实现:
void qsort(int* array, int start,int end)
{
if (end-start<=1) return;
//任意选定一个单元x,将小于x的单元移动到x左边,大于x的单元移动到x右边,x最终移动到位置middle
qsort(array, start, middle); //递归调用第一次
qsort(array, middle, end); //递归调用第二次
}
又例如,斐波那契数列是用递归来定义的:
f(0)=0;
f( 1)=1;
f(n)=f(n-1)+f(n-2)
但如果你写成递归,那n比较大时会发生悲剧(思考题:为什么?),一般要把这个函数写成迭代:
int f(int n)
{
int a[100];
a[0]=0;
a[1]=1;
for (int k=2;k<=n;k++)
a[k]=a[k-1]+a[k-2]; //迭代
return a[n];
}
- 递归与迭代的区别
- 迭代与递归的区别
- 递归与迭代的区别
- 递归与迭代的区别
- 迭代与递归的区别
- 迭代与递归的区别
- 迭代与递归的区别
- 迭代与递归的区别
- 递归与迭代的区别
- 递归与迭代的区别
- 迭代与递归的区别
- 递归与迭代的区别
- 递归与迭代的区别
- 迭代与递归的区别
- 迭代与递归的区别
- 递归与迭代的区别
- 递归与迭代的区别
- 递归 与 迭代 的区别对比!
- FragmentTabHost切换Fragment时避免重复加载UI
- 哪些人可以学前端开发?
- 如何把手头上的apk安装到电视上
- mac安装screen
- 【Android】安卓开发实战之自定义ActionBar(活动栏、状态栏)颜色且没有色差
- 递归与迭代的区别
- Android图片加载框架Picasso最全使用教程 二
- Epipolar geometry对极几何
- Spring 定时任务之 @Scheduled cron表达式
- HOJ 整数对
- Java 集合之ArrayList
- Sentiment Classification with User and Product information
- 找球号(三)
- 支付宝sdk 支付订单查询失败