一. 递归的定义

函数可以调用自己,这就叫函数的递归。

先序递归和后序递归

#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)-递归的更多相关文章

  1. 十四. Python基础(14)--递归

    十四. Python基础(14)--递归 1 ● 递归(recursion) 概念: recursive functions-functions that call themselves either ...

  2. C语言基础--循环 递归打印乘法表

    for循环打印乘法表: #include <stdio.h> // for循环打印乘法表 int main(int argc, const char * argv[]) { //矩形 ; ...

  3. Java入门 - 语言基础 - 14.String类

    原文地址:http://www.work100.net/training/java-string.html 更多教程:光束云 - 免费课程 String类 序号 文内章节 视频 1 概述 2 创建字符 ...

  4. go语言基础之递归实现数字累加

    1.实现1+100 = 5050 示例: package main import "fmt" //实现1+2+3+……100 func test01() (sum int) { f ...

  5. C++语言基础(14)-typeid

    typeid可用来判断类型是否相等: 例如有下面的定义: char *str; ; ; float f; 类型比较 结果 类型比较 结果 typeid(int) == typeid(int) true ...

  6. Java语言基础(14)

    1 访问控制修饰符(二) 1)public:公共的,可以用来修饰类,属性,构造方法以及方法,被public修饰的类,属性,构造方法以及方法,可以任意的进行访问. 2)private:私有的,可以用来修 ...

  7. GO学习-(14) Go语言基础之接口

    Go语言基础之接口 接口(interface)定义了一个对象的行为规范,只定义规范不实现,由具体的对象来实现规范的细节. 接口 接口类型 在Go语言中接口(interface)是一种类型,一种抽象的类 ...

  8. D10——C语言基础学PYTHON

    C语言基础学习PYTHON——基础学习D10 20180906内容纲要: 1.协程 (1)yield (2)greenlet (3)gevent (4)gevent实现单线程下socket多并发 2. ...

  9. D05——C语言基础学PYTHON

    C语言基础学习PYTHON——基础学习D05 20180815内容纲要: 1 模块 2 包 3 import的本质 4 内置模块详解 (1)time&datetime (2)datetime ...

随机推荐

  1. 【矩阵乘法】【快速幂】【递推】斐波那契数列&&矩乘优化递推模板

    题目大意: F[0]=0 F[1]=1 F[n+2]=F[n+1]+F[n] 求F[n] mod 104. F[n+2] F[n+1] = 1 1 1 0 * F[n+1] F[n] 记这个矩阵为A, ...

  2. 【pb_ds】bzoj1056 [HAOI2008]排名系统/bzoj1862 [Zjoi2006]GameZ游戏排名系统

    STL裸题,线下AC,bzoj无限RE ing…… #include<cstdio> #include<cctype> #include<iostream> #in ...

  3. 选择改变事件OnCheckedChange

    1.效果图:选择正确的提示选对,选择错误提示选错 2.activity_main.xml <?xml version="1.0" encoding="utf-8&q ...

  4. 网络采集软件核心技术剖析系列(5)---将任意博主的全部博文下载到内存中并通过Webbrower显示(将之前的内容综合到一起)

    一 本系列随笔概览及产生的背景 自己开发的豆约翰博客备份专家软件工具问世3年多以来,深受广大博客写作和阅读爱好者的喜爱.同时也不乏一些技术爱好者咨询我,这个软件里面各种实用的功能是如何实现的. 该软件 ...

  5. zip压缩与解压文件夹或文件

    import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import ...

  6. 自己做的javascript简易计算器

    html <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF- ...

  7. Swift,类的调用

    1.class或者struct如果没有实例没办法直接调用 (1)设置class后可直接调用 class S{ static var width:Int{ //static代表公有的,都可使用 retu ...

  8. js 的 slice方法

    slice() 方法可从已有的数组中返回选定的元素. string.slice( beginslice [, endSlice] ); 下面是参数的详细信息: beginSlice : 从零开始的索引 ...

  9. JVM类加载的那些事

    原文出处: 占小狼 前言 Java源代码被编译成class字节码,最终需要加载到虚拟机中才能运行.整个生命周期包括:加载.验证.准备.解析.初始化.使用和卸载7个阶段.   加载 1.通过一个类的全限 ...

  10. iOS:CocosPods的装配和配置ReactiveCocoa

    关于CocosPods的安装和配置ReactiveCocoa 1. CocoaPods和ReactiveCocoa的安装 CocoaPods是iOS最常用最有名的类库管理工具 使用ReactiveCo ...