什么是递归?

递归就是自己调用自己,相当于循环;

- 直接递归调用

- 间接调用:通过其他**调用

#include<stdio.h>

#include<stdlib.h>

void doHello()

{

printf("Hello, World!\n");

doHello();      //doHello函数自己调用自己!

}

int mai (void)

{

doHello(); // 调用doHello函数

return 0;

}

总结:递归解决基本问题,把原有复杂的问题变成简单问题。

递归计算阶乘:n!=1×2×3×...×n(5!=5*4*3*2*1)

#include<stdio.h>

#include<stdlib.h>

long factorial(int n)  //定义阶乘

{

if (n == 0)

return 1;  //0 的阶乘等于 1

else

return n*factorial(n-1); // factorial() 自己调用自己

}

int main()

{

int m;  //

long r; // 计算出的阶乘

printf("请输入m的值:\n");

scanf("%d\n",&m);

r = factorial(m);

printf("m的阶乘是:%d\n",r);

return 0;

}

使用迭代(循环结构)-递归(选择结构)

递归的缺点是反复调用函数占用额外的空间!

使用迭代(循环计算阶乘):

#include<stdio.h>

#include<stdlib.h>

long iterative( int n )

{

int i;

long r = 1;

for(i = 1;i <= n;i++)

r*=i //r= r*i

return r;

}

int main()

{

int m;  //

long r; // 计算出的阶乘

printf("请输入m的值:\n");

scanf("%d\n",&m);

r = iterative(m);  //函数调用

printf("m的阶乘是:%d\n",r);

return 0;

}

C语言入门 - 什么是递归?相关推荐

  1. c语言入门——函数的递归

    一.什么是递归? 程序调用自身的编程技巧称为递归( recursion). 递归做为一种算法在程序设计语言中广泛应用. 一个过程或函数在其定义或说明中有直接或间接 调用自身的一种方法,它通常把一个大型 ...

  2. C语言入门——递归(思想简要讲解+简单递归练习)

    C语言入门--递归(简要讲解+递归练习) 递归定义: 程序调用自身的编程技巧称为递归( recursion). 递归从字面上我们可以理解为: 递去+归来 如下图 使用递归的目的: 简要:简化代码量,方 ...

  3. c语言 统计数量用count_C语言编程学习之递归实现汉诺塔图解!还有零基础入门视频~...

    C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...

  4. c 语言 double 除法_这是我的C语言入门笔记

    点击上方"C语言中文社区",选择"设为星标★" 技术干货第一时间送达! 来自:大鱼机器人 精彩回顾: [万字长文]C语言高效编程与代码优化,建议收藏![推荐] ...

  5. 这是我的C语言入门笔记。

    c语言入门 C语言一经出现就以其功能丰富.表达能力强.灵活方便.应用面广等特点迅速在全世界普及和推广.C语言不但执行效率高而且可移植性好,可以用来开发应用软件.驱动.操作系统等.C语言也是其它众多高级 ...

  6. c语言圆周率计算_C语言入门这一篇就够了

    c语言入门 C语言一经出现就以其功能丰富.表达能力强.灵活方便.应用面广等特点迅速在全世界普及和推广.C语言不但执行效率高而且可移植性好,可以用来开发应用软件.驱动.操作系统等.C语言也是其它众多高级 ...

  7. 视频教程-Python编程的术与道:Python语言入门-Python

    Python编程的术与道:Python语言入门 大学教授,美国归国博士.博士生导师:人工智能公司专家顾问:长期从事人工智能.物联网.大数据研究:已发表学术论文100多篇,授权发明专利10多项 白勇 ¥ ...

  8. Python语言入门这一篇就够了-学习笔记(十二万字)

    Python语言入门这一篇就够了-学习笔记(十二万字) 友情提示:先关注收藏,再查看,12万字保姆级 Python语言从入门到精通教程. 文章目录 Python语言入门这一篇就够了-学习笔记(十二万字 ...

  9. c语言取余规则_这是我的C语言入门笔记

    点击上方"C语言中文社区",选择"设为星标★" 技术干货第一时间送达! 来自:大鱼机器人 精彩回顾: [万字长文]C语言高效编程与代码优化,建议收藏![推荐] ...

最新文章

  1. 虚商烦恼多?不在怕的!你距离享受高效虚商控制台只差一步的距离
  2. R语言使用caret包构建GBM模型:在模型最优参数已知的情况下,拟合整个训练集,而无需进行任何重采样或参数调优
  3. Matlab练习:timer(定时器)
  4. ActiveReports 报表应用教程 (4)---分栏报表
  5. 投资公司的钱是自己的吗?
  6. 单片机c语言常用的语句有几条,单片机C语言教程-基础语句
  7. 首次!中国移动在Nature 杂志子刊 Nature Electronics发表5G高能效通信技术文章
  8. 移动支付走入线下商家
  9. 共探数字化安全新未来,CSA SDP2.0标准发布暨零信任技术研讨会召开
  10. 【转】成像的清晰度、分辨率和锐度
  11. 自动生成 : Java方法 toString(); hashCode(); equals(); compareTo()的方法 避免繁杂的体力活
  12. mysql临时表在哪找_MySQL 中的临时表
  13. 好看的html视频播放界面,推荐几款超个性的HTML5视频播放器
  14. 支付机构客户备付金存管办法
  15. 心物各东西:基因,文化和心灵
  16. [ Linux ] PCF8563数据手册解析 |CSDN创作打卡
  17. html三角形坐标图怎么看,地理三角坐标图的简易判读方法
  18. 2021年3月8日:MyBatis框架学习笔记02:利用MyBatis实现CRUD操作
  19. 硬核!百度灵医智惠综合实力业内领先
  20. 新知实验室 腾讯云实时音视频 RTC WEB端初识

热门文章

  1. C语言实现模拟键盘输入字符串
  2. EOS系列 - EOSIO WEB IDE
  3. LSC(Lens Shading Correction)——镜头阴影矫正
  4. 魅族16php7.3系统,魅族16X 官方Flyme7.3.0.0A稳定版
  5. 梁宁:2019年是5G时代,也是革命性的新营销阵地
  6. 互联网产品经理技能树
  7. 【C/C++进阶】输入的技巧
  8. 什么软件可以文字转语音?快把这些软件收好
  9. 利用云函数实现网易云音乐自动签到、刷歌
  10. 计算机快捷键全选,全选快捷键,详细教您电脑全选快捷键是什么