#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