码迷,mamicode.com
首页 > 编程语言 > 详细

C语言进阶递归调用

时间:2019-09-20 19:25:38      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:简单的   语言   mamicode   接下来   例子   多少   图片   斐波纳契数列   info   

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、……这个数列从第三项开始,每一项都等于前两项之和。

有趣的兔子问题:技术图片

 

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

分析如下:

 技术图片

 

 依次类推可以列出下表:

 技术图片

 

 技术图片

 

 更多干货笔记关注微信公众号 : 老九学堂

C语言进阶递归调用

标签:简单的   语言   mamicode   接下来   例子   多少   图片   斐波纳契数列   info   

原文地址:https://www.cnblogs.com/ljxt/p/11558661.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!