0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

递归指的是在函数的定义中使用函数自身的方法

电子工程师 来源:未知 作者:李倩 2018-11-12 15:06 次阅读

递归指的是在函数的定义中使用函数自身的方法。

举个例子:从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?"从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?'从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?……'"

语法格式如下:

voidrecursion()

{ statements; ... ... ... recursion(); /* 函数调用自身 */ ... ... ...

}

intmain()

{ recursion();

}

流程图:

C语言支持递归,即一个函数可以调用其自身。但在使用递归时,程序员需要注意定义一个从函数退出的条件,否则会进入死循环。

递归函数在解决许多数学问题上起了至关重要的作用,比如计算一个数的阶乘、生成斐波那契数列,等等。

数的阶乘

下面的实例使用递归函数计算一个给定的数的阶乘:

#includedoublefactorial(unsignedinti)

{ if(i <= 1)   {      return1;

} returni * factorial(i - 1);

}

intmain()

{ inti = 15;

printf("%d 的阶乘为 %f ", i, factorial(i));

return0;

}

当上面的代码被编译和执行时,它会产生下列结果:

15的阶乘为1307674368000.000000

斐波那契数列

下面的实例使用递归函数生成一个给定的数的斐波那契数列:

#includeintfibonaci(inti)

{ if(i == 0) { return0;

} if(i == 1) { return1;

} returnfibonaci(i-1) + fibonaci(i-2);

}intmain()

{ inti;

for(i = 0; i < 10; i++)    {       printf("%d ", fibonaci(i));

} return0;

}

当上面的代码被编译和执行时,它会产生下列结果:

0112358132134

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    180

    文章

    7513

    浏览量

    124334
  • 函数
    +关注

    关注

    3

    文章

    3846

    浏览量

    61228
  • 递归
    +关注

    关注

    0

    文章

    28

    浏览量

    8974

原文标题:C语言中的递归

文章出处:【微信号:c-stm32,微信公众号:STM32嵌入式开发】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    快速掌握Python的递归函数与匿名函数调用

    好就容易画虎不成反类犬,  b) Python中使用lambda关键字来创建匿名函数。所谓匿名,即不再使用def这种标准形式定义函数,需要
    发表于 07-19 16:22

    Labview递归函数的使用案例

    Labview递归函数的使用案例,简单的1+2+3...+100求和,简单易懂,充分理解递归函数的思想
    发表于 10-09 09:37

    Keil Arm中使用malloc函数方法是什么?

    Keil Arm中使用malloc函数方法是什么?需要经历哪几个步骤?
    发表于 07-01 08:45

    LabVIEW中使递归算法

    LabVIEW中使递归算法LabVIEW支持递归吗?如何在LabVIEW中创建递归的VI?LabVIEW确实支持递归。按照下面的步骤来创建
    发表于 04-17 20:11

    matlab自定义函数调用的方法

    matlab自定义函数调用的方法 命令文件/函数文件+ 函数文件 - 多
    发表于 11-29 13:14 88次下载

    C++教程之函数递归调用

    C++教程之函数递归调用 在执行函数 f 的过程中,又要调用 f 函数本身,称为函数递归
    发表于 05-15 18:00 35次下载

    C++的实验教程之函数递归算法资料免费下载

    函数递归算法 1.范例:求组合数, 一、实验目的1. 学会解决简单的递归算法。2. 掌握函数的嵌套调用。
    发表于 01-29 10:51 2次下载
    C++的实验教程之<b class='flag-5'>函数</b>的<b class='flag-5'>递归</b>算法资料免费下载

    C语言函数的实验详细资料说明

    实验目的和要求(1)掌握C语言函数定义方法函数的声明及函数的调用方法。(2)掌握
    发表于 12-06 08:00 4次下载
    C语言<b class='flag-5'>函数</b>的实验详细资料说明

    C语言-内联函数递归函数、指针函数

    这篇文章介绍C语言的内联函数递归函数函数指针、指针函数、局部地址、const关键字、extern关键字等知识点;这些知识点在实际项目开发
    的头像 发表于 08-14 10:03 1333次阅读

    Python支持递归函数

    Python支持递归函数——即直接或间接地调用自身以进行循环的函数递归是颇为高级的话题,并且它在Python中相对少见。然而,它是一项应该
    的头像 发表于 02-21 14:28 394次阅读

    函数递归-2

    传址调用是把函数外部创建变量的内存地址传递给函数参数的一种调用函数的方式 此传参方式可以让函数函数外面的变量建立起真正的联系。也就是说,
    的头像 发表于 02-21 15:53 315次阅读
    <b class='flag-5'>函数</b>与<b class='flag-5'>递归</b>-2

    函数递归-3

    程序调用自身的编程技巧称为递归(recursion)。递归作为一种算法在程序设计语言中广泛应用。一个过程或函数在其定义或说明中有直接或间接调
    的头像 发表于 02-21 15:57 365次阅读

    什么是Python的递归函数

    递归函数必须有终止条件。编程中,函数的调用要占用名叫栈(stack)的内存空间。调用函数时,程序会将相关的数据存储到计算机的栈里。
    的头像 发表于 02-23 10:25 1147次阅读

    递归函数计算斐波那契数列中的第n项值

    编写一个递归函数,用于计算斐波那契数列中的第n项值,并在主函数中调用该函数输出斐波那契数列的前15项。
    的头像 发表于 06-07 11:30 1689次阅读

    关于C语言中的递归

    递归指的是函数定义中使函数自身
    发表于 02-26 10:34 118次阅读
    关于C语言中的<b class='flag-5'>递归</b>