高级控制流程

本文深入探讨了高级控制流程,包括递归的常见定义及函数类型,异常处理的信号与异常机制,以及并行处理的多种模型。递归在数据结构、算法和数学中广泛应用;异常处理提供了结构化的错误处理方式;并行处理如工作群、管理者/工人和流水线模型在提高效率方面起关键作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、递归(recursive code)
  1. 常见的递归定义
a)         数据结构:树,堆
b)        操作:类型推断(type inference),类型合一(unification)
c)        数学实体:斐波纳契树,分形图
d)        算法:快速排序,树遍历,递归下降分析
注:基准范例的定义(base case definition)一般会定义一个特例,它不依赖于递归定义,从而避免陷入无限循环。
  2. 常用的递归函数
a)         互递归(mutual recursion):通过调用其他函数间接包含自身。
b)        尾递归(tail recursion):递归调用恰恰发生在函数返回点之前,可被编译器优化为简单的跳转。
注:迭代不同于递归,它只是简单的循环,不涉及函数的扩展。递归发生在逐渐加深的层次上,而迭代始终在同一层中。
二、异常(exception)
  1. 基于信号(signal)的错误处理:信号处理器
  2. 基于异常的错误处理:异常作为语言的一部分(而非由库提供的功能),能够沿着程序的词法和函数的调用栈传播,允许程序员以结构化的方式处理它们。
 
三、并行处理(parallelism)
  1. 工作群模型(work crew model):一系列相似的任务并行运转
  2. 管理者∕工人模式(boss/worker model):一个管理者为不同的工人分配工作
例如:Unix系统中的sendmail函数
  3. 流水线模型(pipeline model):对数据进行操作并将处理后的数据传递给下一个任务的一系列任务
例如:Unix基于过滤器的程序(filter-based program)
 
四、非局部跳转(non-local jump)
C函数库中的setjmp和longjmp函数 
 
五、宏替换(macro substitution)
(参考《Code Reading-The Open Source Perspective》第五章)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值