函数递归
递归:程序调用自身的编程技巧称为递归(recursion)。递归作为一种算法在程序设计语言中广泛应用。一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需的多次重复计算,大大地减少了程序的代码量。递归的主要思考方式在于:把大事化小
递归的两个必要条件:
递归常见的错误:栈溢出
程序的内存分配

一个由C/C++编译的程序占用的内存分为以下几个部分:
栈区(stack):由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈
堆区(heap):一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。
注意:它与数据结构中的堆不一样,分配方式倒是类似于链表
全局区/静态区(static):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的一块区域。程序结束后由系统释放
文字常量区:常量字符串放在这里。程序结束后由系统释放
程序代码区:存放函数体的二进制代码
【例题】接受一个整型值(无符号),按照顺序打印它的每一位。例如:输入1234,打印1 2 3 4