前言
本篇的例子均基于如下问题:
写一个函数PrintN,使得传入一个正整数为N,能顺序打出从1到N的全部正整数。
一、关于空间的使用
1.循环
2.递归
例:写一个函数PrintN,使得传入一个正整数为N,能顺序打出从1到N的全部正整数。
1)循环
#include<bits/stdc++.h>
using namespace std;
void PrintN(int N){
for(int i=1;i<=N;i++){
cout<<i<<endl;
}
}
int main()
{
int N;
cin>>N;
PrintN(N);
return 0;
}
运行结果:
2)递归
#include<bits/stdc++.h>
using namespace std;
void PrintN(int N){
if(N){
PrintN(N-1);
cout<<N<<endl;
}
}
int main()
{
int N;
cin>>N;
PrintN(N);
return 0;
}
运行结果:
分析:当数据较大时,例如上面N为100000时,调用递归函数,直接终止程序,没有任何输出。这是因为递归对空间的占用很大,爆掉了。
二、计时函数
实现代码如下:
#include<bits/stdc++.h>
#include<time.h>
using namespace std;
clock_t start,stop;
//clock_t是clock()函数返回的变量类型
double duration;
//记录测试函数运行时间,以秒为单位
void printN(int N){
for(int i=1;i<=N;i++){
cout<<i<<endl;
}
}
int main()
{
/*不在测试范围内的准备工作写在clock()调用之前 */
int N;
cin>>N;
start=clock();//开始计时
printN(N); //测试函数
stop=clock(); //停止计时
duration=((double)(stop-start))/CLK_TCK;
cout<<duration;//输出计时
return 0;
}
输入数据:100
运行结果:
三、杂7杂8的知识点总结
1.vector的皮毛运用
#include<bits/stdc++.h>
#include<vector>
using namespace std;
int main(){
int b[]={1,2,3,4,5,6,7,8,9,10,11,12};
vector<int> a(b,b+12);
for(int i=0;i<12;i++){
cout<<a[i]<<" ";
}
cout<<endl;
cout<<sizeof(a)<<endl<<sizeof(a[0])<<endl;
system("pause");
return 0;
}
运行结果: