C语言入门——递归(简要讲解+递归练习)

递归定义:

程序调用自身的编程技巧称为递归( recursion)。

递归从字面上我们可以理解为:

递去+归来 如下图

使用递归的目的

简要:简化代码量,方便运算

递归的优缺点:

优点:

递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量

简要:代码量少

缺点:

递归算法解题相对常用的算法如普通循环等,运行效率较低。因此,应该尽量避免使用递归,除非没有更好的算法或者某种特定情况,递归更为适合的时候。

简要:运行效率低

在简单地了解递归之后,我们来看一下一些递归练习题加深理解:

1.斐波那契数列

波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……

数学递推表示:F*(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)

核心代码突破点:F*(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)

问题:求第n项斐波那契数列

输入:输入一个整数n,代表斐波那契数列的第n项(0≤n≤20)

输出:输出一个整数,代表斐波那契数列第n项值

样例:

输入:3

输出:2

递归实现:

#include <stdio.h>int fibonacci(int n)
{if(n <= 2){return 1;}else{return fibonacci(n - 1) + fibonacci(n - 2);}
}
int main()
{int n;//第n项 scanf("%d", &n);printf("%d\n", fibonacci(n));//第n项斐波那契数列的值 return 0;
}

自然也可以借助循环等实现,在这就不在多加陈述。

2.求n的阶乘

一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!。

核心代码突破点:

大于等于

任何大于等于1 的自然数n 阶乘表示方法:

n!=1×2×3×…×(n-1)×n

n!=n×(n-1)!

0的阶乘

0!=1。

问题:求n的阶乘

输入:输入一个整数n(0≤n≤10)

输出:输出一个数,表示n的阶乘

样例:

输入:5

输出:120

#include <stdio.h>int Fact(int n)//递归函数
{if( n <= 1){return 1;}return n * Fact(n - 1);
}
int main()//主函数
{int n;//阶乘数 scanf("%d", &n);printf("%d\n", Fact(n));return 0;
}

3.打印一个整数每一位

问题:输出一个整数的每一位

输入:输入一个整数a(大小在int数据范围内)

输出:输出每一位并用空格隔开

样例:

输入:13579

输出:1 3 5 7 9

#include <stdio.h>void Prt(int a)//递归函数
{if(a > 9)Prt(a / 10);   //单个语句将{}省略printf("%d ", a % 10);
}
int main()//主函数
{int a ;​    scanf("%d",&a);​    Prt(a);
​   printf("\n");
​   return 0;
}

关于递归就先说到这里,希望这篇文章能对你有所帮助!

作者:code_流苏

喜欢的话,关注一下,点个赞吧!

欢迎评论交流,如有错误,还请指正!

C语言入门——递归(思想简要讲解+简单递归练习)相关推荐

  1. C语言中怎么用循环统计买法,C语言入门谭浩强版简单选择法冒泡法用数组和for循环进行学生成绩简单统计处理...

    C语言入门谭浩强版 简单选择法排序 冒泡法排序 用数组和for循环进行学生成绩简单统计处理 例如:求个人平均分 学科平均分 单科最高分等 简单选择法 #include #define N 10 voi ...

  2. C语言入门系列一之C语言介绍、环境配置和运行执行

    鉴于书本和教材文字过多.又难懂的缺点,所以我打算写一系列通俗移动的C语言入门教程,让大家在短时间内学习和掌握C语言,以及遇到C语言的一些问题该如何得到快速的解决.希望这些系列的教程,能够帮助到大家!该 ...

  3. c语言基础编程题讲解,C语言入门例题讲解

    C语言入门例题讲解 C语言是一门通用计算机编程语言,应用广泛.C语言的设计目标是提供一种能以简易的方式编译.处理低级存储器.产生少量的机器码以及不需要任何运行环境支持便能运行的'编程语言.今天就为大家 ...

  4. 【C语言入门】SDUT《程序设计基础I 》实验1-顺序结构程序设计题解 c语言入门语法讲解

    SDUT<程序设计基础I >实验1-顺序结构程序设计题解 && c语言语法讲解 链接 前言: 为方便更多同学入门C语言, 特在此编写SDUT OJ c语言入门150题题解即 ...

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

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

  6. 要理解递归,得先理解递归--用Java语言由浅入深讲解汉诺塔游戏

    2019独角兽企业重金招聘Python工程师标准>>> 一.递归是什么? 定义:程序调用自身的编程技巧称为递归.它分为调用阶段和回退阶段,递归的回退顺序是它调用顺序的逆序. 递归使用 ...

  7. 踢爆IT劣书出版黑幕——由清华大学出版社之《C语言入门很简单》想到的(1)...

    1.前言与作者 首先声明,我是由于非常偶然的机会获得<C语言入门很简单>这本书的,绝对不是买的.买这种书实在丢不起那人. 去年这书刚出版时,在CU论坛举行试读推广,我当时随口说了几句(没说 ...

  8. C语言简单递归实现字符串逆序输出

    题目内容的 "注意" 已经侧面规定了要用递归来实现: 输入是一个可能含有空格的串说明要用gets来读入字符串,如果利用scanf的话是无法读入一段含有空格的串. 下面先上一般方法: ...

  9. 如何用递归思想 求n的阶乘 C语言

    如何用递归思想 求n的阶乘 C语言 首先,我讲一下什么是递归? 一个函数在它的函数体内调用它自身称为递归调用,这种函数称为递归函数.执行递归函数将反复调用其自身,每调用一次就进入新的一层,当最内层的函 ...

最新文章

  1. Ensembl数据库下载参考基因组(植物拟南芥)
  2. AI企业下一个使命:让生物特征数据使用走向阳光透明
  3. 【云栖大会】阿里云生态 开启智能“大航海时代”
  4. java 成员变量的初始化_Java类变量和成员变量初始化过程
  5. 260多媒体语言如何调节_260马力配9.7米货厢,实拍柳汽H5小三轴载货车
  6. java 显示图片的一部分_求只显示图片上半部分三分之一的写法
  7. matlab2c使用c++实现matlab函数系列教程-weibpdf函数
  8. 奈学教育CEO孙玄:成为一个有情怀的工程师,我的12点思考
  9. 三层交换机LLDP协议对 L2/L3端口,报文处理实验
  10. 奥维地图显示no data(-5)解决
  11. 清华大学学术答辩通用PPT模板
  12. 中班音乐计算机反思,中班音乐游戏打字机教案反思
  13. oracle alter database,alter database操作
  14. MATLAB Smoothing Spline 拟合
  15. 2017年囧事大全,全部真人真事
  16. python except exception_Python 获取异常(Exception)信息的几种方法
  17. php 生成迅雷地址,php实现把url转换迅雷thunder资源下载地址的方法,_PHP教程
  18. pc版qq登录及移动版qq登录的申请过程
  19. {*zoom:1;}作用
  20. 隐藏tab标签完美解决办法

热门文章

  1. 计算机翻译 调剂,19考研的看过来,部分接收调剂院校出炉,不少985噢!
  2. AI教程之 Stable Diffusion在自己电脑上运行稳定的AI自动艺术创作
  3. opencv安装配置测试
  4. Your branch is up to date with 'origin/master'.但是本地代码却不是最新的
  5. 【以史为鉴】《饱食穷民》读后感
  6. 英伟达最新linux驱动程序,英伟达Linux版显卡驱动 v340.32最新稳定版下载
  7. 贵州商学院计算机与信息工程学院吴秋兰,第十届大学生电商三创大赛贵州商学院校决赛简报...
  8. 通过python构建一个区块链来学习区块链
  9. Java小知识之海王多线程
  10. 数据分析调研报告_CodingPark编程公园