Topic 01

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)函数

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 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...

相关推荐
傲世仙尊11 小时前
继承-类设计层次复用切片转换与菱形继承的死结
c++
架构师伯子明11 小时前
FFmpeg C++学习(一):编译和demo
开发语言·c++·学习
纪念 22911 小时前
C++算法(六)
开发语言·c++·算法
ShineWinsu12 小时前
对于Qt:QCheckBox常见属性的详细解析
c++·qt·面试·笔试·gui·qcheckbox·多选框
AI的探索之旅12 小时前
97 个 OpenCV 实例(三十七):二维码识别,一张图四个码的陷阱
c++·opencv·计算机视觉
UIU11413 小时前
P16237 [蓝桥杯 2026 省 B] 应急布线
数据结构·c++·算法·蓝桥杯
raindayinrain13 小时前
c++设计模式
开发语言·c++·设计模式
旖旎夜光13 小时前
LeetCode 315: 算右侧小于当前元素的个数(归并排序) —— 题解
c++·学习·算法·leetcode·排序算法
D e re k ZH13 小时前
保序回归:从 PAVA 到可并堆的单调约束优化
c++·算法·数据挖掘·回归·kotlin
青少儿编程课堂13 小时前
蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:字典树前缀树与单词检索统计
c++·python·算法·bfs·信息学竞赛