递归和迭代的区别
2015-08-19 18:00
288 查看
转自:/article/8161864.html
递归的基本概念:程序调用自身的编程技巧称为递归,是函数自己调用自己.
一个函数在其定义中直接或间接调用自身的一种方法,它通常把一个大型的复杂的问题转化为一个与原问题相似的规模较小的问题来解决,可以极大的减少代码量.递归的能力在于用有限的语句来定义对象的无限集合.
使用递归要注意的有两点:
1)递归就是在过程或函数里面调用自身;
2)在使用递归时,必须有一个明确的递归结束条件,称为递归出口.
递归分为两个阶段:
1)递推:把复杂的问题的求解推到比原问题简单一些的问题的求解;
2)回归:当获得最简单的情况后,逐步返回,依次得到复杂的解.
利用递归可以解决很多问题:如背包问题,汉诺塔问题,...等.
斐波那契数列为:0,1,1,2,3,5...
fib(0)=0;
fib(1)=1;
fib(n)=fib(n-1)+fib(n-2);
[cpp]
view plaincopyprint?
int fib(int n)
{
if(0 == n)
return 0;
if(1 == n)
return 1;
if(n > 1)
return fib(n-1)+fib(n-2);
}
递归的基本概念:程序调用自身的编程技巧称为递归,是函数自己调用自己.
一个函数在其定义中直接或间接调用自身的一种方法,它通常把一个大型的复杂的问题转化为一个与原问题相似的规模较小的问题来解决,可以极大的减少代码量.递归的能力在于用有限的语句来定义对象的无限集合.
使用递归要注意的有两点:
1)递归就是在过程或函数里面调用自身;
2)在使用递归时,必须有一个明确的递归结束条件,称为递归出口.
递归分为两个阶段:
1)递推:把复杂的问题的求解推到比原问题简单一些的问题的求解;
2)回归:当获得最简单的情况后,逐步返回,依次得到复杂的解.
利用递归可以解决很多问题:如背包问题,汉诺塔问题,...等.
斐波那契数列为:0,1,1,2,3,5...
fib(0)=0;
fib(1)=1;
fib(n)=fib(n-1)+fib(n-2);
[cpp]
view plaincopyprint?
int fib(int n)
{
if(0 == n)
return 0;
if(1 == n)
return 1;
if(n > 1)
return fib(n-1)+fib(n-2);
}
[cpp] view plaincopyprint? //这是递归 int funcA(int n) { if(n > 1) return n+funcA(n-1); else return 1; } //这是迭代 int funcB(int n) { int i,s=0; for(i=1;i<n;i++) s+=i; return s; } //这是递归 int funcA(int n) { if(n > 1) return n+funcA(n-1); else return 1; } //这是迭代 int funcB(int n) { int i,s=0; for(i=1;i<n;i++) s+=i; return s; }
相关文章推荐
- linux -- chcp
- Introduction to Java Programming编程题5.14<计算数列>
- 黑马程序员—其他类
- iOS UIScrollView实现无限滚动,思路与代码
- Django 的数据库查询
- Android 点滴——Handler用法总结
- 数据库三大范式
- poj 1734 Sightseeing trip (floyed最小环)
- jedis异常:NoSuchElementException: Timeout waiting for idle object
- mysql拒绝访问(Error 1044/1045)问题的解决
- openstack theme topic
- C里strlen函数和sizeof函数的作用
- oracle 表空间不足解决办法大全
- 黑马程序员-----基本语法(2)
- win7下Qt Creator使用Gsoap
- linux Shell脚本编码格式
- 虚拟机网络配置
- iOS:UITextField中文输入法输入时对字符长度的限制
- Win32汇编--Win32汇编的高级语法
- BrowseForFolder使用,参数详解