1.什么是递归
2. 递归的限制条件
3. 递归的举例
4. 递归与迭代
1.什么是递归
1.1递归是什么
在C语⾔中,递归就是函数⾃⼰调⽤⾃⼰
上述就是⼀个简单的递归程序,只不过上⾯的递归只是为了演⽰递归的基本形式,不是为了解决问 题,代码最终也会陷⼊死递归,导致栈溢出
递归思想:
大事化小的过程;
递归中的递就是递推的意思,归就是回归的意思,接下来慢慢来体会
2 递归的限制条件
1.递归存在限制条件,当满⾜这个限制条件的时候,递归便不再继续。
2.每次递归调⽤之后越来越接近这个限制条件。
这是递归的两个必要条件。
3 递归举例
求n的阶乘
5的阶乘就是5*4*3*2*1
4的阶乘就是4*3*2*1
3的阶乘就是3*2*1
顺序打印⼀个整数的每⼀位
比如输入1234
打印1 2 3 4
4. 递归与迭代
递归是⼀种很好的编程技巧,但是很多技巧⼀样,也是可能被误⽤的,就像求阶乘⼀样,看到推导的公式,很容易就被写成递归的形式
如果不想使⽤递归就得想其他的办法,通常就是迭代的⽅式(通常就是循环的⽅式)
事实上,我们看到的许多问题是以递归的形式进⾏解释的,这只是因为它⽐⾮递归的形式更加清晰, 但是这些问题的迭代实现往往⽐递归实现效率更⾼。
求第n个斐波那契数
斐波那契数: 1 1 2 3 5 8 13 21 34......
像这样前两项之和等于第三项的就是斐波那契数
但当我们输入50的时候,需要很长一段时间出现结果,并且结果是错误的。
原因是递归程序会不断的展开,在展开的过程中,我们很容易就能发现,在递归的过程中会有重复计 算,⽽且递归层次越深,冗余计算就会越多
通过count能够体现。
修改一下代码
迭代的⽅式去实现这个代码,效率就要⾼出很多了。