就我理解的递归

看了几篇文章 虽然不是很懂 我也小总结了下

第一:自己调用自己

第二:有大到小的顺序

第三:当变量=1的时候 推出递归 if(temp==1) return 1;  就是 一定要设置出口 要不然会一直循环下去

第四:

当函数调用自己时,在栈中为新的局部变量和参数分配内存,函数的代码用这些变量和参数重新运行。递归调用并不是把函数代码重新复制一遍,仅仅参数是新的。当每次递归调用返回时,老的局部变量和参数就从栈中消除,从函数内此次函数调用点重新启动运行。可递归的函数被说成是对自身的“推入和拉出”。

第五:递归运行速度慢,耗内存

第六:动态规划能有效的--不会造成重复运

end

在命令式编程中,我们解决一些问题往往可以使用循环来代替递归,这样便不会因为数据规模造成堆栈溢出。但是在函数式编程中,要实现“循环”的唯一方法便是“递归”,因此尾递归和CPS对于函数式编程的意义非常重大。了解尾递归,对于编程思维也有很大帮助,因此大家不妨多加思考和练习,让这样的方式为自己所用

参考:http://www.cnblogs.com/winter-cn/archive/2008/08/23/1274475.html

http://msdn.microsoft.com/zh-cn/library/z3dk2cc3

http://www.cnblogs.com/jeffreyzhao/archive/2009/04/01/tail-recursion-explanation.html

理论上有点懂了  可是不会用哦~请高手指教哈

原文地址:https://www.cnblogs.com/0banana0/p/2056126.html