函数的递归,递归与迭代的例题,以及经典递归问题(待解决)

本文探讨了递归编程的概念、特点和应用,通过打印整数的每位、计算字符串长度和求阶乘展示了递归的用法。同时,对比了递归与迭代在解决斐波那契数列问题时的效率差异,强调了在考虑递归时应预防栈溢出,并提及了递归在解决复杂问题时的清晰性优势。
摘要由CSDN通过智能技术生成

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
/*递归:程序调用自身的编程技巧
一个过程或函数在其定义或说明中有直接或者间接的调用自身的一种方法,它通常把一个大型复杂的问题层层转化成一个与原问题相似的规模较小的问题来求解。
递归策略:只需少量的程序就可描述出解题过程中所需要的多次重复计算,大大减少了程序的代码量
递归的主要思考方式在于:把大事化小
递归的两个必要条件:
1、存在限制条件,当满足这个限制条件时,递归便不再继续。
2、每次递归调用后越来越接近这个限制条件
递归的特点:
在函数体中递归的应用可以大量减少临时变量的创建。

Stack overflow—栈溢出
内存可分为三块:栈区,堆区,静态区。

栈区一般放局部变量,函数形参
堆区为动态开辟的内存
静态区一般放全局修饰的变量和static修饰的变量。
系统分配给栈空间的内存时有限的,如果出现了死循环或者死递归,这样有可能导致一直开辟空间,最终产生空间耗尽的情况,这种现象称为栈溢出
*/

//接受一个整形(无符号),按照顺序打印它的每一位
void Fib(int x)
{
    if (x > 9)
        Fib(x / 10);
    printf("%d  ", x % 10);
}
int main()
{
    int input

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值