循环i=1.0/(i+2)引起的时间超限
#include<stdio.h>int main(){
float f,sum=1.0,i=1.0;
int k=-1;
while(scanf("%f",&f)!=EOF){
while(i>=f){
i=1.0/(i+2);
sum+=i*k;
k=-k;
}
i=1.0;
k=-1;
printf("%.4f\n",sum*4);
sum=1.0;
}
return 0;
}
其中的i=1.0/(i+2)如果写出i+=2;sum+=1.0/i;就不会超限,具体代码如下:‘
#include<stdio.h>
int main(){
float f,sum=1.0,i=1.0;
int k=-1;
while(scanf("%f",&f)!=EOF){
while(1.0/i>=f){
i+=2;//这个要分开些
sum+=1.0/i*k;
k=-k;
}
i=1.0;
k=-1;
printf("%.4f\n",sum*4);
sum=1.0;
}
return 0;
}
请问代码1的时间复杂度为什么大于代码2; #include<stdio.h>
int main(){
float f,sum=1.0,i=1.0;
int k=-1;
while(scanf("%f",&f)!=EOF){
while(1.0/i>=f){
i+=2;//这个要分开些
sum+=1.0/i*k;
k=-k;
}
i=1.0;
k=-1;
printf("%.4f\n",sum*4);
sum=1.0;
}
return 0;
}
第二个代码忘换格式了
页:
[1]