美文网首页
递归是神

递归是神

作者: ericdejavu | 来源:发表于2017-06-16 15:01 被阅读0次

created by Dejavu
(完结)


有段日子一直在学习opencv,但是有些书中的功能代码经常忘记,因此方便起见会常常上CSDN搜索自己要的代码,经常性的会看到yang_xian521这位博主的文章,而且博客的签名是

迭代的是人,递归的是神

确实对于理解递归的同学来说,递归写功能函数比迭代简单太多,而且一些基本的数据结构,如建树、建图等都用递归使代码简化,使用递归将大大减少了编程难度,但是递归函数在需要进行高速运算的工程下,会显得很糟糕,因为递归的实现机制会造成大量的开销,如果方法运算深度很深的话很容易导致出现栈溢出。个人写代码时,感觉对于深度控制这点python做的比较好,然而在c++和JavaScript中如果代码没优化控制好深度,很容易导致程序奔溃。所以对于计算深度较深的函数最好的方法是用迭代代替递归。

c++递归的实现

//阶乘
int fac(int n) {
  if(n==1) return 1;
  else return n*fac(n--);
}
//斐波那契数列
int fibonacci(int n) {
  if(n==1||n==2) return 1;
  else return fibonacci(n-1)+fibonacci(n-2);
} 

由于函数在内存中是以栈的形式储存和调用的所以在执行时是不断执行自己直到函数不再调用自己,就是return了以后才会执行前面的自己,即递归的运算是倒序的

//例如这里的fac函数
n=5;
start
fac(5) ---> 5*fac(4);
fac(4) -----> 4*fac(3);
fac(3) ------>  3*fac(2);
fac(2) -------->  2*fac(1);
fac(1) ---------->  1
return 1
return 2*fac(1)
return 3*fac(2)
return 4*fac(3)
return 5*fac(4)
end

相关文章

  • 递归是神

    created by Dejavu(完结) 有段日子一直在学习opencv,但是有些书中的功能代码经常忘记,因此方...

  • 超脱自然,非同凡响!C语言递归算法

    俗话说“”迭代是人,递归是神“” 那递归神在什么地方? 简单地说,递归是函数内的层层循环找结果 引用一下专业术语:...

  • 深究递归和迭代的区别、优缺点及实例对比

    1.迭代是人,递归是神! 从“编程之美”的角度看,可以借用一句非常经典的话:“迭代是人,递归是神!”来从宏观上对二...

  • 迭代是人,递归是神

    怎么去正视迭代与递归呢? 正如数学之美所说,To iterate is human,to recurse divi...

  • 学习笔记CB010:递归神经网络、LSTM、自动抓取字幕

    递归神经网络可存储记忆神经网络,LSTM是其中一种,在NLP领域应用效果不错。 递归神经网络(RNN),时间递归神...

  • Java 二叉树递归与非递归所有遍历

    二叉树的递归与非递归遍历 PS:非递归遍历搞得头脑发晕.... 参考文献 :左神的书

  • 递归算法

    To iterate is human, to recurse, divine.人理解迭代,神理解递归。 什么是递...

  • 递归

    To iterate is human, to recurse, divine.人理解迭代,神理解递归。 人的思维...

  • 学习python3的野路子——递归

    递归[1]:直观的感受是与归纳法相似。必须要有的两个部分:递归基、递归规则。 递归基保证递归能返回结果。 递归规则...

  • 单链表反转

    链表结构 递归和非递归实现都基于下面这张图的原理,不同的是,递归时从后向前,非递归是从前向后,并且非递归要head...

网友评论

      本文标题:递归是神

      本文链接:https://www.haomeiwen.com/subject/mwxmqxtx.html