首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

递推和递归有什么区别?感觉像是一样的.解决方法

2012-02-22 
递推和递归有什么区别?感觉像是一样的.最近在学习算法,搞晕了.[解决办法]递推iterative;递归recursive递

递推和递归有什么区别?感觉像是一样的.
最近在学习算法,搞晕了.

[解决办法]
递推=iterative;递归=recursive
递归指自我调用的函数;递推指重复进行的过程,这个重复的过程可以是,有自我调用的函数的重复的自我调用,也可以是其它过程。
[解决办法]
iterative:[数]迭代的
这个解释比较准确,可以理解为纯逻辑的描述

至于递归或非递归可以理解为程序结构上的实现方式
[解决办法]
递归:将问题规模为n的问题,降解成若干个规模为n-1的问题,依次降解,直到问题规模可求,求出低阶规模的解,代入高阶问题中,直至求出规模为n的问题的解。
递推:构造低阶的规模(如规模为i,一般i=0)的问题,并求出解,推导出问题规模为i+1的问题以及解,依次推到规模为n的问题。

递归包括回溯和递推两个过程。
[解决办法]
不同的概念
递推是数学上的概念,主要是指递推式或者说递推数列,递推函数,也就是说一个数列的下面一项有它的前面几项的值的一种运算(或者函数)构成,比如a[n]=a[n-1]+a[n-2];
递归是计算机中的概念,主要是指递归函数(计算机中函数同数学上函数意义也不相同,是指一段代码),就是指会调用自己的函数。显然,数学中的递推函数在计算机实现中可以通过递归来实现,但是不一定要通过递归来实现。
比如上面的数列,可以通过递归来实现为:
int Fib(int n){
if(n<=2)return 1;
return Fib(n-1)+Fib(n-2);
}
但是,也可以不通过递归(函数不调用自己)来实现,比如
int Fib(int n){
int f1=1,f2=1;
int i;
if(n<=2)return 1;
for(i=3;i<=n;i++){
int f=f1+f2;
f1=f2;f2=f;
}
return f;
}
而不是说第二个程序是递推。

热点排行