【老九学堂】【C语言进阶】递归调用

我们先来了解一下什么是递归?

递归(recursion):即程序调用自身的一个编程技巧。

 

首先,递归需要满足以下2个条件:

 

1)有反复执行的过程(调用自身)

2)有跳出反复执行过程的条件(递归出口)

 

那递归是不是就是万能的呢?其实不然,递归的有优点当然就有缺点!

优点:递归的优点是为某些编程问题提供了最简单的解决方案。

缺点:缺点是一些递归算法会快速的消耗计算机的内存资源,另外,递归不方便阅读和维护。

接下来,我们用一个例子来说明递归的优缺点。

 



 

下面我们就来看几个递归例子:

 

(1)阶乘

 



 

(2)汉诺塔问题


 

(3)全排列

 

从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。

 

如1,2,3三个元素的全排列为:

 


 

(4)斐波那契数列

 

斐波纳契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……

 

这个数列从第三项开始,每一项都等于前两项之和。

 

有趣的兔子问题:

 

 

一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来。如果所有兔子都不死,那么一年以后可以繁殖多少对兔子?

 

分析如下:

 

 

依次类推可以列出下表:

 


遇到问题,可加老九君个人QQ:614940318,请备注来自CSDN
老九学堂免费C、C++、Java课程地址: https://study.163.com/courses-search?keyword=老九学堂

 

徐老师线下全栈就业班开始报名啦~

 

零基础开讲,8个月,Java全栈学习,终身推荐就业

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值