递归是以自相似的方式重复项目的处理过程。同样地,在编程语言中,在函数内部调用函数自身,称为递归调用。如下:

void recursion()
{recursion(); /* 函数调用自身 */
}int main()
{recursion();
}

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

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

数的阶乘

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

#include <stdio.h>int factorial(unsigned int i)
{if(i <= 1)    {return 1;
}
return i * factorial(i - 1); }int  main() {int i = 15;
printf("Factorial of %d is %d\n", i, factorial(i));
return 0;
}

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

Factorial of 15 is 2004310016

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

#include <stdio.h>int fibonaci(int i)
{if(i == 0){return 0;}if(i == 1){return 1;}return fibonaci(i-1) + fibonaci(i-2);
}int  main()
{int i;for (i = 0; i < 10; i++)     {        printf("%d\t%n", fibonaci(i));     }     return 0; }

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

0 1   1   2   3   5   8   13  21  34

C语言基础教程之递归相关推荐

  1. 递归函数c语言的作用,C语言基础教程之递归

    更多C/C++资料下载,C/C++学习乐园:747821062 C语言递归 递归指的是在函数的定义中使用函数自身的方法. 更多C/C++资料下载,C/C++学习乐园:747821062 从前有座山,山 ...

  2. %3c- r语言运算符,R语言基础教程之运算符

    原标题:R语言基础教程之运算符 运算符类型 在R编程中有以下类型的运算符 - 算术运算符 关系运算符 逻辑运算符 赋值运算符 其他运算符1.算术运算符 下表显示了R语言支持的算术运算符.运算符对向量的 ...

  3. c语言常量类型转换,c语言基础教程常量变量和类型转换,免费版.doc

    c语言基础教程常量变量和类型转换,免费版 第二章??????常量变量和类型转换2.1.1数字常量??? 数字常量包括整型常量和浮点型常量,浮点型常量又称实数.????1.整型常量???? HYPERL ...

  4. C语言不用文件系统读取文件,C语言-基础教程-非缓冲文件系统

    前面介绍的缓冲文件系统是借助文件结构体指针来对文件进行管理,通过文件指针来对文件进行访问,既可以读写字符.字符串.格式化数据,也可以读写二进制数据.非缓冲文件系统依赖于操作系统,通过操作系统的功能对文 ...

  5. c语言指针地址交换程序,C语言-基础教程-指针的地址分配

    我们可以定义指针变量指向任何类型的变量.在上述的处理过程中,指针变量指向的变量通过传递变量的地址来实现.指针变量的取值是内存的地址,这个地址应当是安全的,不可以是随意的,否则,写入内存单元的值将会使得 ...

  6. 计算机编程c 语言实型数据,C语言-基础教程-C语言实型数据

    C语言-基础教程-C语言实型数据 分类:计算机等级 | 更新时间:2016-07-08| 来源:转载 2.4.1 实型常量 实型常量又称浮点常量,是一个十进制表示的符号实数.符号实数的值包括整数部分. ...

  7. Go语言基础教程:版本选择

    专题目标:打造Go语言新手入门零基础免费教程 文章核心:一次只解决一个问题,用尽可能短的时间 你好,我是洋一,一个持续向上生长的互联网人. 众所周知,我们学习一门编程语言,很大程度上都离不开搭建该编程 ...

  8. R语言基础教程6:程序设计基础

    R语言基础教程1:数据类型 R语言基础教程2:散点图 R语言基础教程3:曲线图.误差线和图例 R语言基础教程4:柱形图 R语言基础教程5:图形页面排版 R语言基础教程6:程序设计基础 R语言基础教程7 ...

  9. c语言怎么做步骤循环,C语言基础教程之循环

    此程序已经陷入无限循环中,C语言基础教程之循环 当一段代码需要执行多次时,您可能会遇到这种情况.通常,语句按顺序执行:首先执行函数中的第一个语句,然后执行第二个语句,依此类推. 编程语言提供各种控制结 ...

最新文章

  1. 实现Spark集群部署 这些公司都经历了什么?
  2. HDU 3501 Calculation 2
  3. spark-streaming first insight
  4. linux脚本是什么语言,Linux学习之Shell脚本语言的优势是什么?
  5. linux下copy命令c实现,C语言自己实现linux下cp文件复制命令
  6. 外卖行业现状分析_简要分析外卖运营行业的发展现状
  7. linux中竖线'|',双竖线‘||’,和的意思
  8. 通过挑土豆—我学会了如何区分JS数组的遍历方法
  9. python中什么的布尔值不是false_不是python中的布尔值
  10. 华为android截屏快捷键,华为手机怎么截屏快捷键是什么
  11. Unity可编程渲染管线系列(七)反射(镜面和环境)
  12. lect01_codes02_numpy
  13. python爬取上证股票的历史记录并画历史收盘图曲线
  14. 时隔多年我又再一次体验了一把跟大神聊天的感觉
  15. Vue.js的通识必修
  16. 思科 Cisco Packet Tracer 标准ACL的配置
  17. CSS样式的补充:​如何设置文本框内的默认文字?​
  18. java单例模式恶汉模式_单例模式之懒汉模式恶汉模式
  19. 大二JavaWeb课程设计——图书管理系统(可以很好的应付老师的作业)
  20. python语音建模_该系统实现了基于深度框架的语音识别中的声学模型和语言模型建模...

热门文章

  1. [转载] 玩转python中with的使用与上下文管理器
  2. [转载] 5.2 calendar--通用日期的相关函数(4)
  3. docker“少折腾”
  4. swiper轮播在vue中动态绑定返回的数据图片显示不完整
  5. hadoop2.7的目录结构
  6. java使用xsd校验xml样例
  7. ajax 中文日历显示
  8. CV学习笔记-边缘提取
  9. 在CMakeLists.txt文件中包含Eigen
  10. Linux+gcc设置断点,gcc/g++常用编译选项和gdb常用调试命令