问题描述
- 关于含递归函数的程序
-
关于递归有两个问题
1.读递归的程序时怎样做才不容易乱?有没有什么画流程图之类的方法,求指导~
2.我是c++入门,自己写程序总用不上递归,也不太敢用,想请教一下递归的用法
谢谢各路大神啦!
解决方案
那是因为你程序看得少,写得少,还有就是数学没有学扎实,所以大脑中能装的东西太少。多练就可以了。程序看多了根本不要什么流程图。
递归用处很多,比如说图和树的遍历算法、数学递推公式直接求解、排列组合算法等等。
解决方案二:
比如说加载TreeView控件就用到递归,再比如拷贝文件(包含子文件夹)也用到它。
解决方案三:
递归看第一遍就可以了,然后考虑一下函数的边界和返回。
解决方案四:
关于俩个问题,我的见解:
1、读递归程序主要就是搞清楚每句话具体在做什么,要透过咱们写的代码看到编译器如何运行的。最好是画一个堆栈,看主调函数是如何调用递归(传参数,调用递归(......),返回值)。就是了解函数的递归过程。
2、如果你搞懂了递归,自然会用上的,一般情况况下,循环都可以用递归。
补充1:递归函数:
递归函数就是一个函数直接或者简介的调用自己。但是必须满足以下条件:
1、函数必须是逐渐收敛的,不能发散。
2、函数必须有限制条件或者终止条件。
3、递归一般分为俩种:数值问题与非数值,前者罗列一个数学公式,例如n的阶乘问题。后者要分析算法。例如汉诺塔问题。
4、递归的代码一般都比较少,但是有时效率很低,选择时要考虑时间复杂度什么的。
补充2:个人学习经验:
练习固然重要,但是前提是你理解这个思想,掌握这个知识点了,把几个经典递归例子搞懂,弄明白。在通过编程来检验自己是否真的熟练掌握。这个知识自己的学习方法,嘿嘿,听听就好啦。
祝你生活愉快哈>_<
解决方案五:
关于俩个问题,我的见解:
1、读递归程序主要就是搞清楚每句话具体在做什么,要透过咱们写的代码看到编译器如何运行的。最好是画一个堆栈,看主调函数是如何调用递归(传参数,调用递归(......),返回值)。就是了解函数的递归过程。
2、如果你搞懂了递归,自然会用上的,一般情况况下,循环都可以用递归。
补充1:递归函数:
递归函数就是一个函数直接或者简介的调用自己。但是必须满足以下条件:
1、函数必须是逐渐收敛的,不能发散。
2、函数必须有限制条件或者终止条件。
3、递归一般分为俩种:数值问题与非数值,前者罗列一个数学公式,例如n的阶乘问题。后者要分析算法。例如汉诺塔问题。
4、递归的代码一般都比较少,但是有时效率很低,选择时要考虑时间复杂度什么的。
补充2:个人学习经验:
练习固然重要,但是前提是你理解这个思想,掌握这个知识点了,把几个经典递归例子搞懂,弄明白。在通过编程来检验自己是否真的熟练掌握。这个知识自己的学习方法,嘿嘿,听听就好啦。
祝你生活愉快哈>_<
解决方案六:
不建议使用递归,很容易造成堆栈溢出,画流程图用visio画就可以,你可以百度下辗转相除法实现的求最大公约数的C语言代码,是个递归的例子
解决方案七:
恩恩 果然练习是最重要的
解决方案八:
谢谢大家的回答啦~(╯3╰)
解决方案九:
遍历目录以及子目录查找所有文件就是一个很好的遍历程序