什么是递归?
程序调用自身的编程技巧称为递归(recursion)
递归做为一种算法在程序设计语言中广泛应用。一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,他通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,
递归策略
只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序地代码量。
递归的主要思考方式在于:把大事化小
练习1
接受一个整型值(无符号),按照顺序打印它的每一位
例如:
输入:1234,输出:1 2 3 4
逻辑:
利用递归的实现
栈溢出
内存分为:栈区、堆区以及静态区
栈区存放:局部变量、函数的形参、每一次函数的调用都会在栈区申请空间
递归的两个必要条件
存在限制条件,当满足这个限制条件的时候,递归便不再继续。
每次递归调用之后越来越接近这个限制条件。
练习2
编写函数不允许创建临时变量,求字符串的长度。
逻辑:
不允许创建临时变量(用递归):