函数套函数

10 分钟

函数里可以调用别的函数。把一件大事拆成几个小函数,再一层层组合,程序就清楚多了。

比如“输出一个 n 行的三角形”,可以拆成两层:底层管“打印一行 k 个星号”,上层管“循环 n 次,每次行数递增”。

void printStars(int k) {         // 小函数:打一行
    for (int i = 0; i < k; i++) cout << '*';
    cout << endl;
}

void triangle(int n) {           // 大函数:调用小函数
    for (int r = 1; r <= n; r++)
        printStars(r);           // 第 r 行打 r 个星号
}

int main() { triangle(5); }

triangle 自己不关心“一行怎么打”,那是 printStars 的事;它只负责“打几行、每行几个”。职责分开后,哪层出问题就查哪层。

这种“大函数调小函数”像搭积木:底层积木稳了,上层随便拼。很多算法题的主函数其实就是把几个写好的小函数串起来。

注意区分:这一节是 A 调 B(不同函数互相调用),跟“函数自己调用自己”的递归不是一回事,递归下一批课再讲。

小纸条

把"输出一个 n 行的三角形"拆成两个函数。

登录 后可看答案

函数套函数 · 考级冲刺 · op599 课程