| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> C++知识库 -> C语言——函数的递归 -> 正文阅读 |
|
|
[C++知识库]C语言——函数的递归 |
举一个简单的例子,(递归这样写是错误的,会陷入死循环,但这也确实是一种递归,仅仅是为了举例)
练习
??函数的递归必须满足两个条件,1,存在限制条件,当满足这个限制条件的时候,递归便不再继续,上图的n>9便是限制条件,2,每次递归调用之后越来越接近这个限制条件。上图的n/10便是使n 的值越来越接近9这个限制条件, 但是即使满足这两个条件也不是一定没问题,举个例子。
??这个时候便会报错 ,提示 stack overflow(栈溢出),因为每一次调用test函数栈区都要给它分配空间,而且上一次调用并没有结束,调用的次数太多,栈区的内存不够分配了,便会出现栈溢出的情况。
练习2 编写函数不允许创建临时变量,求字符串的长度
?练习 3 ?计算n 的阶乘(不考虑溢出)
有一些功能,可以使用迭代的方式(循环)实现,也可以使用递归 练习 3 求第n 个斐波那契数列(不考虑溢出)
?但是这种方法效率太低了,因为套娃太多了,,,很多层,递归层次太深了,虽然没有导致栈溢出,但是效率很慢,比如算第50 个斐波那契数列,可能电脑要运行很长时间才能计算下来,下面是效率比较高的算法
? |
|
|
| C++知识库 最新文章 |
| 【C++】友元、嵌套类、异常、RTTI、类型转换 |
| 通讯录的思路与实现(C语言) |
| C++PrimerPlus 第七章 函数-C++的编程模块( |
| Problem C: 算法9-9~9-12:平衡二叉树的基本 |
| MSVC C++ UTF-8编程 |
| C++进阶 多态原理 |
| 简单string类c++实现 |
| 我的年度总结 |
| 【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
| c语言常见错误合集 |
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年12日历 | -2025/12/15 11:25:11- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |