C语言入门 - 什么是递归?
什么是递归?
递归就是自己调用自己,相当于循环;
- 直接递归调用
- 间接调用:通过其他**调用
#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语言入门 - 什么是递归?相关推荐
- c语言入门——函数的递归
一.什么是递归? 程序调用自身的编程技巧称为递归( recursion). 递归做为一种算法在程序设计语言中广泛应用. 一个过程或函数在其定义或说明中有直接或间接 调用自身的一种方法,它通常把一个大型 ...
- C语言入门——递归(思想简要讲解+简单递归练习)
C语言入门--递归(简要讲解+递归练习) 递归定义: 程序调用自身的编程技巧称为递归( recursion). 递归从字面上我们可以理解为: 递去+归来 如下图 使用递归的目的: 简要:简化代码量,方 ...
- c语言 统计数量用count_C语言编程学习之递归实现汉诺塔图解!还有零基础入门视频~...
C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...
- c 语言 double 除法_这是我的C语言入门笔记
点击上方"C语言中文社区",选择"设为星标★" 技术干货第一时间送达! 来自:大鱼机器人 精彩回顾: [万字长文]C语言高效编程与代码优化,建议收藏![推荐] ...
- 这是我的C语言入门笔记。
c语言入门 C语言一经出现就以其功能丰富.表达能力强.灵活方便.应用面广等特点迅速在全世界普及和推广.C语言不但执行效率高而且可移植性好,可以用来开发应用软件.驱动.操作系统等.C语言也是其它众多高级 ...
- c语言圆周率计算_C语言入门这一篇就够了
c语言入门 C语言一经出现就以其功能丰富.表达能力强.灵活方便.应用面广等特点迅速在全世界普及和推广.C语言不但执行效率高而且可移植性好,可以用来开发应用软件.驱动.操作系统等.C语言也是其它众多高级 ...
- 视频教程-Python编程的术与道:Python语言入门-Python
Python编程的术与道:Python语言入门 大学教授,美国归国博士.博士生导师:人工智能公司专家顾问:长期从事人工智能.物联网.大数据研究:已发表学术论文100多篇,授权发明专利10多项 白勇 ¥ ...
- Python语言入门这一篇就够了-学习笔记(十二万字)
Python语言入门这一篇就够了-学习笔记(十二万字) 友情提示:先关注收藏,再查看,12万字保姆级 Python语言从入门到精通教程. 文章目录 Python语言入门这一篇就够了-学习笔记(十二万字 ...
- c语言取余规则_这是我的C语言入门笔记
点击上方"C语言中文社区",选择"设为星标★" 技术干货第一时间送达! 来自:大鱼机器人 精彩回顾: [万字长文]C语言高效编程与代码优化,建议收藏![推荐] ...
最新文章
- 虚商烦恼多?不在怕的!你距离享受高效虚商控制台只差一步的距离
- R语言使用caret包构建GBM模型:在模型最优参数已知的情况下,拟合整个训练集,而无需进行任何重采样或参数调优
- Matlab练习:timer(定时器)
- ActiveReports 报表应用教程 (4)---分栏报表
- 投资公司的钱是自己的吗?
- 单片机c语言常用的语句有几条,单片机C语言教程-基础语句
- 首次!中国移动在Nature 杂志子刊 Nature Electronics发表5G高能效通信技术文章
- 移动支付走入线下商家
- 共探数字化安全新未来,CSA SDP2.0标准发布暨零信任技术研讨会召开
- 【转】成像的清晰度、分辨率和锐度
- 自动生成 : Java方法 toString(); hashCode(); equals(); compareTo()的方法 避免繁杂的体力活
- mysql临时表在哪找_MySQL 中的临时表
- 好看的html视频播放界面,推荐几款超个性的HTML5视频播放器
- 支付机构客户备付金存管办法
- 心物各东西:基因,文化和心灵
- [ Linux ] PCF8563数据手册解析 |CSDN创作打卡
- html三角形坐标图怎么看,地理三角坐标图的简易判读方法
- 2021年3月8日:MyBatis框架学习笔记02:利用MyBatis实现CRUD操作
- 硬核!百度灵医智惠综合实力业内领先
- 新知实验室 腾讯云实时音视频 RTC WEB端初识
热门文章
- C语言实现模拟键盘输入字符串
- EOS系列 - EOSIO WEB IDE
- LSC(Lens Shading Correction)——镜头阴影矫正
- 魅族16php7.3系统,魅族16X 官方Flyme7.3.0.0A稳定版
- 梁宁:2019年是5G时代,也是革命性的新营销阵地
- 互联网产品经理技能树
- 【C/C++进阶】输入的技巧
- 什么软件可以文字转语音?快把这些软件收好
- 利用云函数实现网易云音乐自动签到、刷歌
- 计算机快捷键全选,全选快捷键,详细教您电脑全选快捷键是什么