写一个输出1到M的代码循环和递归都可以
循环 正常执行
# include <stdio.h>
# define M 100000
void PrintN(int N)
{
int i;
for(i=0;i<N;i++)
{
printf("%d ",i);
}
}
int main()
{
PrintN(M);
return 0;
}
递归 不执行
# include <stdio.h>
# define M 100000
void PrintN(int N)
{
if(N)
{
PrintN(N-1);
printf("%d ",N);
}
}//递归裂了啥都没有,递归有时简单,但会占用大量内存空间
int main()
{
PrintN(M);
return 0;
}
当M比较小时,循环和递归都是可以的,但当M较大时,递归不能实现,原因是递归会占用大量的内存空间
所以我们在写代码时,考虑到空间复杂度,有时可以避开递归。