原题是这样的 给你一个N,打印出1到n的所有值;
测试用例10,100,1000,10000,100000.....
打印方法1:递归
#include<stdio.h>
using namespace std;
void print1N(int num)
{
if(num)
{
print1N(num-1);
printf("%d ",num);
}
return ;
}
int main()
{
int num;
scanf("%d",&num);
print1N(num);
return 0;
}
能打印出10,100,1000,及10000,但到十万后函数自动终止,没有一个输出
打印方法2:正常循环
#include<stdio.h>
using namespace std;
void print2N(int num)
{
for(int i=1;i<=num;i++)
{
printf("%d ",i);
}
return ;
}
int main()
{
int num;
scanf("%d",&num);
print2N(num);
return 0;
}
虽然慢但还是能打印出100000
说明递归时100000由于占用空间很大,所以就无法打印,即在正常的算法中空间不能超出限制,解决问题的效率也跟空间的利用效率是有关的。