递归函数 (程序调用自身的编程技巧叫递归)
递归程序的组成部分
1.边界条件处理
2.针对于问题的【处理过程】和【递归过程】
3.结果返回
计算n的阶乘
#include<stdio.h>
int fac(int n){
if(n == 0) return 1;
if(n == 1) return 1;
return n*fac(n-1);
}
int main(){
while(~scanf("%d",&n)){
printf("fac(n) = %d\n",fac(n));
}
return 0;
}
函数调用是在栈区(8MB)
8MB 约等于 8百万字节
1MB = 1024kb
1kb = 1025b
malloc 申请数组是在堆区,堆区大小等于内存条大小
递归有风险,栈区满了,俗称爆栈