C语言基础(14)-递归
一. 递归的定义
函数可以调用自己,这就叫函数的递归。
先序递归和后序递归
- #include <stdio.h>
- void test(int n);
- void test1(int n);
- void main() {
- int a = ;
- test1(a);
- system("pause");
- }
- void test(int n) {
- if (n > ){ // 递归终止条件,递归一定要有终止条件
- printf("n=%d\n",n); // 先序递归 输出结果:10 9 8 7 6 5 4 3 2 1
- test1(n-);
- }
- }
- void test1(int n) {
- if (n > ) {
- test1(n-);
- printf("n=%d\n",n); // 后序递归 输出结果:1 2 3 4 5 6 7 8 9 10
- }
- }
例1:求第n个人的岁数
有n个人排成一队,问第n个人多少岁,他回答比前面一个人大2岁,再问前面一个人多少岁,他回答比前面一个人大2岁,一直问到最后问第一个人,他回答10岁
- #include <stdio.h>
- int getAge(int n);
- void main() {
- int a = ;
- printf("第%d个人的岁数是:%d\n",a,getAge(a));
- system("pause");
- }
- int getAge(int n) {
- int age;
- if (n == ) {
- age = ;
- }
- else{
- age = getAge(n - ) + ;
- }
- return age;
- }
例2:将十进制数转化为二进制数
- #include <stdio.h>
- int getBinary(int n);
- void main() {
- int a = ;
- getBinary(a);
- system("pause");
- }
- //将十进制数转换为二进制数
- int getBinary(int n) {
- int i = n % ;
- if (n >= ) {
- getBinary(n / );
- }
- printf("%d",i);
- }
例3:斐波那契数列
- #include <stdio.h>
- int fib(int n);
- void main() {
- for (int i = ; i < ; i++) {
- printf("第%d项的值为%d\n", i, fib(i));
- }
- system("pause");
- }
- // 斐波那契数列
- int fib(int n) {
- if (n == )
- return ;
- if (n == )
- return ;
- if (n > )
- return fib(n - ) + fib(n - );
- }
例4:计算一个字符串的长度
- #include <stdio.h>
- int mystrlen(const char *p, int n);
- void main() {
- char *a = "hello123";
- printf("当前字符串的长度为:%d\n",mystrlen(a,));
- system("pause");
- }
- int mystrlen(const char *p, int n) {
- if (p[n]) { // 这里判断是否到达字符串末尾的0
- return mystrlen(p,n+);
- }else {
- return n;
- }
- }
例5:求n个自然数的和
- // 求n个自然数的和
- int mysum(int n) {
- if (n == ) { // 递归终止条件
- return ;
- }
- return mysum(n - ) + n;
- }
C语言基础(14)-递归的更多相关文章
- 十四. Python基础(14)--递归
十四. Python基础(14)--递归 1 ● 递归(recursion) 概念: recursive functions-functions that call themselves either ...
- C语言基础--循环 递归打印乘法表
for循环打印乘法表: #include <stdio.h> // for循环打印乘法表 int main(int argc, const char * argv[]) { //矩形 ; ...
- Java入门 - 语言基础 - 14.String类
原文地址:http://www.work100.net/training/java-string.html 更多教程:光束云 - 免费课程 String类 序号 文内章节 视频 1 概述 2 创建字符 ...
- go语言基础之递归实现数字累加
1.实现1+100 = 5050 示例: package main import "fmt" //实现1+2+3+……100 func test01() (sum int) { f ...
- C++语言基础(14)-typeid
typeid可用来判断类型是否相等: 例如有下面的定义: char *str; ; ; float f; 类型比较 结果 类型比较 结果 typeid(int) == typeid(int) true ...
- Java语言基础(14)
1 访问控制修饰符(二) 1)public:公共的,可以用来修饰类,属性,构造方法以及方法,被public修饰的类,属性,构造方法以及方法,可以任意的进行访问. 2)private:私有的,可以用来修 ...
- GO学习-(14) Go语言基础之接口
Go语言基础之接口 接口(interface)定义了一个对象的行为规范,只定义规范不实现,由具体的对象来实现规范的细节. 接口 接口类型 在Go语言中接口(interface)是一种类型,一种抽象的类 ...
- D10——C语言基础学PYTHON
C语言基础学习PYTHON——基础学习D10 20180906内容纲要: 1.协程 (1)yield (2)greenlet (3)gevent (4)gevent实现单线程下socket多并发 2. ...
- D05——C语言基础学PYTHON
C语言基础学习PYTHON——基础学习D05 20180815内容纲要: 1 模块 2 包 3 import的本质 4 内置模块详解 (1)time&datetime (2)datetime ...
随机推荐
- JVM的内存布局
JVM的内存布局包括,其中: Java虚拟机在执行Java程序的过程中会把它所管理的内存(线程相关?)划分为若干个不同的数据区域.有些区域随着虚拟机进程的启动而存在,有些区域则是依赖用户线程的启动和结 ...
- [Contest20180426]校门外的树
$\newcommand{\align}[1]{\begin{align*}#1\end{align*}}$题意:对于一个排列$p_{1\cdots n}$构造一个图,如果$i\lt j$且$p_i\ ...
- 【费马小定理+快速幂+逆元】BZOJ3240-[NOI2013]矩阵游戏
[题目大意] 若用F[i][j]来表示矩阵中第i行第j列的元素,则F[i][j]满足下面的递推式:F[1][1]=1F[i,j]=a*F[i][j-1]+b (j!=1)①F[i,1]=c*F[i-1 ...
- python3开发进阶-Django框架起飞前的准备
阅读目录 安装 创建项目 运行 文件配置的说明 三个组件 一.安装(安装最新LTS版) Django官网下载页面 根据官方的图版本,我们下载1.11版本的,最好用! 有两种下载方式一种直接cmd里: ...
- [Eclipse]--Error:The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path.
一段时间没用eclipse后,再去打开以前的项目,发现一打开前线标红.查看错误的时候,如下图所示: Error:The superclass "javax.servlet.http.Http ...
- yii2.0权限控制 ACF权限
ACF是一种通过yii\filters\AccessControl类来实现的简单授权 有两种角色 ?:未经认证的游客用户 @:已认证的用户 ACF可同过对角色设置权限控制访问 1)记得引入yii\fi ...
- dubbo安装(转载)
1. 概述 ZooKeeper是Hadoop的正式子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护.名字服务.分布式同步.组服务等.ZooKeeper的目标就是封装好复杂 ...
- [读书笔记] 你早该这么玩Excel
<你早该这么玩Excel>只教你做两件事:如何设计一张“天下第一表”,你会恍然大悟,以前遇到的种种麻烦是因为做错了表格:如何一分钟“变”出N张表,你会明白表格是“变”出来的,不是“做”出来 ...
- 【ArcGIS 10.2新特性】ArcGIS 10.2将PostgreSQL原生数据发布为要素服务
1.ArcGIS 10.2支持原生数据发布为要素服 有没有将自己已有的空间数据发布为要素服务的需求?有没有将非Esri空间数据类型的数据作为服务在Web端展示的需求? ArcGIS 10.2 ...
- 【SQL Server学习笔记】事务、锁定、阻塞、死锁 sys.sysprocesses
http://blog.csdn.net/sqlserverdiscovery/article/details/7712068 Column name Data type Description ...