关于含递归函数的程序

问题描述

关于含递归函数的程序

关于递归有两个问题
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╰)

解决方案九:

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

时间: 2024-09-17 04:48:10

关于含递归函数的程序的相关文章

Geohot:iOS 7越狱工具不含中国公司后门程序

据国外http://www.aliyun.com/zixun/aggregation/31646.html">媒体报道,Evad3rs团队iOS 7越狱风波之后.另一知名软件破解团队Geohot表示,通过查看代码他们并没有发现 新的越狱工具Evasi0n 7会让iOS7留有后门,或者任何安全问题.此前Evad3rs团队表示发布了iOS 7破解工具Evasi0n7, 但是其中绑定了来自中国软件企业的软件太极助手,让 众多用户怀疑其中有中国企 业开的后门. Geohot团队表示,"我

ISSkin Pack 3.0 (含预览程序 ISSkinViewer)

原文 http://restools.hanzify.org/article.asp?id=108 包含 250 款皮肤, 预览程序纯粹的由 Inno Setup 脚本写成. 足以展示 Inno Setup 脚本引擎的强大. 下载地址:http://restools.hanzify.org/inno/ISSkinPack/ISSkinPack.exe 预览程序:  引用来自 ISSkinViewer.iss #ifndef IS_ENHANCED  #error Enhanced edition

MS-DOS 7.10完整安装版(含图文安装程序)_DOS/BAT

大家知道,要想学习或使用DOS,安装一个DOS并进行实际操作是非常必要的.MS-DOS 7.10是一个非常好且强大实用的操作系统,而且兼容性和性能都十分强.要在系统中安装MS-DOS 7.10,可以使用MS-DOS 7.10安装程序自动将MS-DOS 7.10安装到系统中.MS-DOS 7.10安装程序是图形/菜单界面,并采用向导式进行.通过此安装程序,大家可以方便地将MS-DOS 7.10安装到硬盘中. MS-DOS 7.10安装程序的特点:全图形方式操作,可以选择安装路径(默认是C:\DOS

Web应用程序的定义

web|程序      前面的章节中已经多次使用过Web应用程序(Web Application)术语,所指的既不是一个真正意义上的Web网站,又不是一个传统的应用程序.换句话说,而是认为它是一些Web网页和用来完成某些任务的其他资源的一个集合.它隐含这样一层意思:有一个预定义的路线贯穿于网页之中,用户可做出选择或提供信息使任务能够完成.      例如,一个在线商店,你为了购买货物,进行反复的观察和选择,浏览一系列网页,收集所需要的信息,支付相应的费用,最后发出定单.也可能是一个"软件升级向导

使用Python实现跨平台的安装程序

引言 我们在使用类 Unix 系统时,经常会用到一些以".bin"或者".run"结尾的安装程序 (Installer).(为描述方便,这里我们使用"Bin 安装程序"来泛指这种安装程序.)Bin 安装程序不依赖于系统发行版自己的包 (package) 管理器来实现应用程序的安装和卸载,而是完全自己控制安装的整个过程,程序卸载的时候需要用户执行应用程序安装目录下的卸载脚本来完成. Bin 安装程序最大的好处就是可以运行在多种类 Unix 平台,以

程序设计基础(C语言)课程主页-2016级

时间很快,2016级的小鲜肉们已经在猜测老贺长什么样子了. 从在线作业到翻转课堂,几届的学生跟着我受了不少苦.话虽这么说,并不代表2016级的就要轻松了(老贺虚伪到底!).不过,苦孩子们,享受吧. 话说回来,老贺在这一届身上也不会太轻松.翻转课堂的模式不陌生了,但新生出来的想解决的问题并不少,让学生学得有效.学得有趣.学得轻松是我的追求.做过不少资源,但随着培养方案的变化,选用教材的变化,中间的调整.补充要花不少时间.最大的变化,是实践体系要完全改变,不再按以前历届的安排去做,更多按课程组的共识

使用Python实现跨Windows和Unix平台安装程序的方法

我们在使用类 Unix 系统时,经常会用到一些以".bin"或者".run"结尾的安装程序 (Installer).(为描述方便,这里我们使用"Bin 安装程序"来泛指这种安装程序.)Bin 安装程序不依赖于系统发行版自己的包 (package) 管理器来实现应用程序的安装和卸载,而是完全自己控制安装的整个过程,程序卸载的时候需要用户执行应用程序安装目录下的卸载脚本来完成. Bin 安装程序最大的好处就是可以运行在多种类 Unix 平台,以及基于

2014秋C++ 第12周项目 C++函数新特征与递归函数

课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂"贺老师课堂"同步展示,使用的帐号请到课程主页中查看.  [项目1- 阅读程序]阅读下列程序,写出程序的运行结果.上机时运行程序,与你的预期进行对照.理解.如果对运行结果和其背后的原理仍不理解,请通过单步执行的手段跟踪理解.(1)阅读下面两个有静态局部变量的程序,阅读中画出其中各变量的变化过程,以掌握静态变量的存储特征,对照实际运行结果检验学习成果

Linux环境下使用eclipse开发C++动态链接库程序

Linux中也有类似windows中DLL的变成方法,只不过名称不同而已.在Linux中,动态链接叫做Standard Object,生成的动态链接文件为*.so.详细请参考相关文档. 开发环境:Eclipse 3.4.2 G++:4.3.2 1. 创建动态链接库 (1)在Eclipse中创建新的C++工程 File->New->Project->C++->C++ Project,选择Shared Library. (2)创建源代码文件 File->New->Sourc