定义

在编程中函数有一个神奇又难理解的功能,就是递归。递归就是在一个过程中要调用上一步或上几步的结果,使用递归过程的函数就叫递归函数。简单说就是函数自身调用自身(听着有点反自然,像自己举起自己)。

递归实例

除了数学的复杂运算中,生活中也有不少递归的实例:

德罗斯特效应

德罗斯特效应(Droste effect)是递归的一种视觉形式,即一张图片中的某部分与整张图片相同,如下:

20180406205325252.jpg

20180406205355939.jpg

别晕、别晕 -_-

或者在自己身前和身后都放一面镜子,深刻体会一会儿 ▄︻┻┳══━一

递归实现

接下来就用C语言递归函数来实现阶乘功能,源码如下:

#include

int factorial(int n) /*外部定义阶乘函数*/

{

int m;

if (n < 0) /*注意要给函数设置一个递归结束条件*/

{

printf("输入错误!");

return 0;

}

else if (n == 1)

{

m = 1;

}

else

{

m = n * factorial(n-1); /*调用函数factorial()自身*/

}

return m;

}

int main()

{

printf("%d", factorial(5));

}

这是程序大概的运算过程:

20180406220517224.jpg

这里要注意给函数设置一个递归结束条件,可以是 if 判断句,不然函数就无限调用自身下去了,你之前看着镜子中的镜子中的……自己都晕,程序自然是崩溃了

php递归函数实现阶乘,递归函数之阶乘的实现相关推荐

  1. C语言实现,阶乘和变式阶乘例1+2的阶乘+3的阶乘....详解(*算法*)

    阶乘算法 分为普通阶乘及,变式阶乘,(1的阶乘+2的阶乘+3的阶乘-) 文章目录 阶乘算法 前言 一.普通阶乘算法 二 ,阶乘递归函数 三.变式阶乘 阶乘优化 总结 前言 普通阶乘例如要求出4的阶乘 ...

  2. 关于递归函数转换为非递归函数的一些方式

    关于递归函数转换非递归函数的一些方式 前言 目的 可行性 转换的几种途径 转换示例 第一个例子:阶乘n! 第二个例子:菲波那契数列 效率的比较 1.阶乘三种方式函数的执行效率比较 2.Fibonacc ...

  3. c语言大数阶乘详细,大数阶乘(c语言)

    大数阶乘.代码比较简单. #include #include #define MAXN 25000 // 如果你的阶乘N比较大,建议大一点 int result[MAXN]; int main() { ...

  4. Java求阶乘和求阶乘之和

    * name:first 功能:1.求阶乘 2.求阶乘之和*/ package exe01;import java.util.Scanner; //输入类 import java.io.Buffere ...

  5. C语言求1000后面有多少个0,1到1000的阶乘 求1000阶乘的结果末尾有多少个0

    急求.用java算1到1000阶乘的末尾有几个零? 急求.用java算1到1000阶乘的末尾有几个零?急求具体的java程序怎么写? 1000的阶乘后面有多少个零? 从1乘到1000得出的结果后面有多 ...

  6. 1000的阶乘有多少个0c语言,1000的阶乘(1000的阶乘等于多少)

    4.02387260077093773543702433923e+2567用这个计算吧....#include #include int main( ) { int n=1000, i; double ...

  7. 伽玛函数:小数的阶乘(广义阶乘)

    n!中的n为小数或不能写作整数的分数的阶乘称为广义阶乘. 广义阶乘的计算用伽玛函数. 伽玛函数: 伽玛函数 性质: 1. 2.Γ(n+1)=nΓ(n)   , n>0 所以举个例子: Γ(10+ ...

  8. C语言求解计算题之n的阶乘以及1的阶乘到n阶乘之和

    计算n的阶乘 //计算n的阶乘 int main() {int i = 0;int n = 0;int ret = 1;scanf("%d", &n);for (i = 1 ...

  9. python递归函数代码_Python递归函数

    参考: 一.递归函数两大要素 --终止条件和递归方程 1.递归方程,即递归调用的方法 递归通俗的说就是在函数内部自己调用自己,如何调用就是递归方程. 以以下的sum(n)求和函数递归实现方式为例,递归 ...

最新文章

  1. 【WebGL】WebGL入门
  2. Docker (3)核心概念
  3. 产品汪们匿名自爆工资,看完心里好难受......
  4. ASP截取字符 截取字符之间的字符
  5. Concurrent包下的常用并发类和普通类之间的区别
  6. ganglia-Monitor
  7. 7-37 整数分解为若干项之和 (20 分)(dfs)
  8. Django模板层:DTL模板渲染-变量
  9. 更快更高更强大,这是英特尔AI助力长城修缮的新进展
  10. linux 会不会受到永恒之蓝漏洞,永恒之蓝漏洞复现(ms17-010)
  11. Java实现八大排序算法
  12. 振动信号的短时傅里叶变换分析
  13. 复合函数高阶求导公式_高中数学复合函数求导公式及法则
  14. Mac终端神器iTerm2配置(oh-my-zsh+shell integration+Powerlevel9k)
  15. 整数 (Integer)
  16. 连接跟踪TCP序号检查
  17. 编译安装oh-my-zsh
  18. 正则表达式--replace
  19. 4-hive 表概念
  20. Hive-CDH参数修改指南--增加自定义参数--命令行显示当前数据-查询结果显示表头(类似修改源生Hive的hive-site.xml文件)

热门文章

  1. mybatis plus一对多查询(经典案例)
  2. 数据处理——OMI/MLS的臭氧卫星数据读取和处理
  3. 劝学 (荀子代表作品)
  4. C#导出word word导出带样式生成word(二)
  5. 谈“堆栈”与“队列”的认识
  6. mysql中insert into含义_MySQL中insert into语句的用法
  7. 大一下|数据结构十大习题|part1
  8. Python列表(list)的相关操作及方法
  9. [Element]给项目中所有的dialog添加打开关闭监听
  10. 媒体播放器播放音频或视频文件提示“没有注册类别”情况的解决办法。