算法精解----递归(尾递归)
来源:互联网 发布:java有趣好玩的代码 编辑:程序博客网 时间:2024/04/29 19:10
书上这样说的:尾递归调用是整个函数体中最后执行的语句且它的返回值不属于表达式的一部分时,这个递归调用就是尾递归。
什么意思呢,就是说我们在写递归函数的时候,最后执行的语句肯定是调用递归函数,并且在调用过程中没有什么加减乘除。
我们拿基本递归来说,如下:
int fact(int n){if (n <= 0)return 0;if (n == 1)return 1;return n*fact(n-1);}
看看上面,最后执行的语句有个n*fact,也就是说,这个返回值属于表达式的一部分,所以不是尾递归。
那么,我们要做4!,我们这个代码应该怎么做呢?
具体代码如下:
int fact_2(int n, int a){if (n < 0)return 0;else if (n == 0)return 1;else if (n == 1)return a;elsereturn fact_2(n-1 , n*a);}
我是用的是MDK测试这个代码,开了优化之后,的确是正确的
0 0
- 算法精解----递归(尾递归)
- 基本递归与尾递归【C 算法精解】
- 算法精解----递归(基本递归)
- 算法精解-C语言描述 递归和尾递归 (图解+实例)
- 算法之尾递归
- 递归替换算法之尾递归
- 【算法】递归与尾递归总结
- 算法精解----递归(自我总结)
- 递归算法
- 递归算法
- 递归算法
- 递归算法
- 递归算法
- 递归算法
- 递归算法
- 递归算法
- 递归算法
- 递归算法
- 图像算法之八:特征提取算法之Haar
- 算法精解----递归(基本递归)
- 在windows和Linux上安装ImageMagick与jmagick,Maven配置、Java图片压缩代码(整理网上、结合自己情况、编写出来的新安装方式)
- yii2不同域名处理不同模块
- HDU 1160 FatMouse's Speed .
- 算法精解----递归(尾递归)
- 欢迎使用CSDN-markdown编辑器
- 怎样设计一个好的数据库
- IT职场,技能比情商重要N倍
- 关于阅读陆舟老师《Struts2技术内幕-深入解析Struts2架构设计与实现原理》一书的阅读笔记(0)
- 什么是死锁,简述死锁发生的四个必要条件,如何避免死锁,解除死锁
- node之http.request
- centos 6.8安装oracle11g r2简易说明
- 算法精解----递归(自我总结)