关于含递归函数的程序

关于递归有两个问题
1.读递归的程序时怎样做才不容易乱?有没有什么画流程图之类的方法,求指导~
2.我是c++入门,自己写程序总用不上递归,也不太敢用,想请教一下递归的用法
谢谢各路大神啦!

9个回答

那是因为你程序看得少,写得少,还有就是数学没有学扎实,所以大脑中能装的东西太少。多练就可以了。程序看多了根本不要什么流程图。
递归用处很多,比如说图和树的遍历算法、数学递推公式直接求解、排列组合算法等等。

比如说加载TreeView控件就用到递归,再比如拷贝文件(包含子文件夹)也用到它。

关于俩个问题,我的见解:

1、读递归程序主要就是搞清楚每句话具体在做什么,要透过咱们写的代码看到编译器如何运行的。最好是画一个堆栈,看主调函数是如何调用递归(传参数,调用递归(......),返回值)。就是了解函数的递归过程。
2、如果你搞懂了递归,自然会用上的,一般情况况下,循环都可以用递归。

补充1:递归函数:

递归函数就是一个函数直接或者简介的调用自己。但是必须满足以下条件:
1、函数必须是逐渐收敛的,不能发散。
2、函数必须有限制条件或者终止条件。
3、递归一般分为俩种:数值问题与非数值,前者罗列一个数学公式,例如n的阶乘问题。后者要分析算法。例如汉诺塔问题。
4、递归的代码一般都比较少,但是有时效率很低,选择时要考虑时间复杂度什么的。

补充2:个人学习经验:

练习固然重要,但是前提是你理解这个思想,掌握这个知识点了,把几个经典递归例子搞懂,弄明白。在通过编程来检验自己是否真的熟练掌握。这个知识自己的学习方法,嘿嘿,听听就好啦。

祝你生活愉快哈>_<

Brain011
Brain媛 如何删除自己的评论啊?多发了一条。。。
大约 5 年之前 回复

递归看第一遍就可以了,然后考虑一下函数的边界和返回。

关于俩个问题,我的见解:

1、读递归程序主要就是搞清楚每句话具体在做什么,要透过咱们写的代码看到编译器如何运行的。最好是画一个堆栈,看主调函数是如何调用递归(传参数,调用递归(......),返回值)。就是了解函数的递归过程。
2、如果你搞懂了递归,自然会用上的,一般情况况下,循环都可以用递归。

补充1:递归函数:

递归函数就是一个函数直接或者简介的调用自己。但是必须满足以下条件:
1、函数必须是逐渐收敛的,不能发散。
2、函数必须有限制条件或者终止条件。
3、递归一般分为俩种:数值问题与非数值,前者罗列一个数学公式,例如n的阶乘问题。后者要分析算法。例如汉诺塔问题。
4、递归的代码一般都比较少,但是有时效率很低,选择时要考虑时间复杂度什么的。

补充2:个人学习经验:

练习固然重要,但是前提是你理解这个思想,掌握这个知识点了,把几个经典递归例子搞懂,弄明白。在通过编程来检验自己是否真的熟练掌握。这个知识自己的学习方法,嘿嘿,听听就好啦。

祝你生活愉快哈>_<

不建议使用递归,很容易造成堆栈溢出,画流程图用visio画就可以,你可以百度下辗转相除法实现的求最大公约数的C语言代码,是个递归的例子

恩恩 果然练习是最重要的

谢谢大家的回答啦~(╯3╰)

遍历目录以及子目录查找所有文件就是一个很好的遍历程序

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问