Topic 01 recap
PrintN
打印N:
cpp
void printN(int n) {
for (int i = 1; i <= n; i ++) {
printf("%d\n", i);
}
}
void printN1(int n) {
if (n) {
printN1(n - 1);
printf("%d\n", n);
}
}
PrintN
与PrintN1
打印数字一个采用循环打印,一个采用递归打印,当n
的值过大时,则第二个打印会直接失败,因为递归所占用的内存超出限制
计算f(x)函数
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> f ( x ) = 1 + x + x 2 / 2 + x 3 / 3 + . . . + x 100 / 100 f(x) = 1 + x + x^2 / 2 + x^3 /3 + ... + x^{100} /100 </math>f(x)=1+x+x2/2+x3/3+...+x100/100
c
double f1(int n, double x) {
double res = 1;
for (int i = 1; i <= n ; ++i) {
res += pow(x, i) / i;
}
return res;
}
double f2(int n, double x) {
double res = 0;
for (int i = n; i > 0; --i) {
res = res * x + 1.0 / i;
}
res += 1;
return res;
}
-
对于时间的计算,由于程序过快,故采用运行
1e7
次的时间(由于单次运行时间非常短,可能无法精确测量,因此通过重复运行多次来累积时间,然后除以运行次数来得到平均单次运行时间。这种方法可以提高测量精度),然后除1e7
得到平均一次运行的时间 -
对于 f1 采用一般的方法进行计算,对于 f2 采用秦九韶方法进行计算,得出的时间前者比后者多一个数量级别
关于抽象
-
抽象只关注问题的解决思路;
-
不关注处理的对象,进行操作的具体细节,便于设计 广泛的解决方法 处理同样原理的问题;
-
提高 一种思路 的 普遍适用性。
End...