iOS基础篇——函数的递归调用(C++)
2013-11-06 14:45
363 查看
蓝鸥iOS培训讲师推荐:在C的语言里有基础和高级之分,那么如果要想学好iOS开发就得先基础学起,从认识到函数也是一个学习过程。今天的内容函数的递归调用问题。
函数的递归调用:在调用一个函数的过程中又出现直接或间接的调用该函数本身。举个例子:
直接调用本函数
下面图是间接调用本函数,在调用f1函数过程中要调用f2函数,然而在调用f2函数过程中还要调用f1函数。
从上面的图中可以看出,这两种递归调用都是没有终止的自身调用,很显然,程序中不应该出现这样的没有终止的递归调用,应该出现有限次数的有终止的递归调用,可以用if语句来控制,只有在某一条件成立时才会往下执行递归调用。
递归函数:包含递归调用的函数
举例说明:如有5人坐在一起,问第5个人年龄多大?说是比第4个人长2岁,第4个人的年龄是,比第3个人长2岁,问第3个人,又比第2个人长2岁,问第2个人,又比第1个人长2岁,那么第1个人18,问第5个人的年龄是?(每个人都比前1个人大2岁)如下:
那么5个人年龄过表如下,可以看出,当n>1时,求第n个人的年龄的公式是一样的,所以可用一个函数表示他们之间的关系。
其中的age函数用来实现上述递归过程,用C++来实现:
调用过程如图:
下面举个例子求n!事实上就是从1*2*3*...*n
那么有很多问题都可以用递归方法来解决,如上段程序中解决的n!,用程序写出来就很容易理解了,这样一来就很利于同学拉的理解与思路。
函数的递归调用:在调用一个函数的过程中又出现直接或间接的调用该函数本身。举个例子:
直接调用本函数
下面图是间接调用本函数,在调用f1函数过程中要调用f2函数,然而在调用f2函数过程中还要调用f1函数。
从上面的图中可以看出,这两种递归调用都是没有终止的自身调用,很显然,程序中不应该出现这样的没有终止的递归调用,应该出现有限次数的有终止的递归调用,可以用if语句来控制,只有在某一条件成立时才会往下执行递归调用。
递归函数:包含递归调用的函数
举例说明:如有5人坐在一起,问第5个人年龄多大?说是比第4个人长2岁,第4个人的年龄是,比第3个人长2岁,问第3个人,又比第2个人长2岁,问第2个人,又比第1个人长2岁,那么第1个人18,问第5个人的年龄是?(每个人都比前1个人大2岁)如下:
那么5个人年龄过表如下,可以看出,当n>1时,求第n个人的年龄的公式是一样的,所以可用一个函数表示他们之间的关系。
其中的age函数用来实现上述递归过程,用C++来实现:
调用过程如图:
下面举个例子求n!事实上就是从1*2*3*...*n
那么有很多问题都可以用递归方法来解决,如上段程序中解决的n!,用程序写出来就很容易理解了,这样一来就很利于同学拉的理解与思路。
相关文章推荐
- 关于指针的一些事情
- C/C++数据对齐详细解析
- C++中引用的使用总结
- C++中引用(&)的用法与应用实例分析
- 解析C++ 浮点数的格式化输出
- 深入分析C++中几个最不常用的关键字
- c++中inline的用法分析
- 深入解析C++ Data Member内存布局
- 从汇编看c++中默认构造函数的使用分析
- 关于C++中的友元函数的一些总结
- C++的sstream标准库详细介绍
- 基于C++自动化编译工具的使用详解
- 浅谈C++中的string 类型占几个字节
- C/C++ 宏详细解析
- 深入分析C++中两个大数相乘结果不正确的问题
- 探讨C++中数组名与指针的用法比较分析
- 深入解析C++中的引用类型
- C++可变参数的实现方法
- C++中的常对象与常对象成员详解
- 基于C++类型重定义的使用详解