int main(void)例10-1分析cal (sel);.main()void cal (intsel)vol _ball();vol_cylind();cal ()vol_cone();double vol_ball()vol _cone ()vol_ball()vol_cylind ()doublevol cylind()1double vol_cone()
例10-1 分析 int main(void) { . cal (sel); } void cal (int sel) { . vol_ball(); vol_cylind(); vol_cone(); } double vol_ball( ) { . } double vol_cylind( ) { . } double vol_cone( ) { . } main( ) cal ( ) vol_ball ( ) vol_cylind ( ) vol_cone ( )
10.1.2函数的嵌套调用■在一个函数中再调用其它函数的情况称为函数的嵌套调用。口如果函数A调用函数B,函数B再调用函数C,一个调用一个地嵌套下去,构成了函数的嵌套调用。口具有嵌套调用函数的程序,需要分别定义多个不同的函数体,每个函数体完成不同的功能它们合起来解决复杂的问题
◼ 在一个函数中再调用其它函数的情况称为函 数的嵌套调用。 如果函数A调用函数B,函数B再调用函数C, 一个调用一个地嵌套下去,构成了函数的嵌套 调用。 具有嵌套调用函数的程序,需要分别定义多个 不同的函数体,每个函数体完成不同的功能, 它们合起来解决复杂的问题。 10.1.2 函数的嵌套调用
结构化程序设计方法■自顶向下,逐步求精,函数实现口自顶向下:程序设计时,应先考虑总体步骤,后考虑步骤的细节:先考虑全局自标,后考虑局部目标。先从最上层总目标开始设计,逐步使问题具体化。不要一开始就追求众多的细节。口逐步求精:对于复杂的问题,其中大的操作步骤应该再将其分解为一些子步骤的序列,逐步明晰实现过程。口函数实现:通过逐步求精,把程序要解决的全局目标分解为局部目标,再进一步分解为具体的小自标,把最终的小自标用函数来实现。问题的逐步分解关系,构成了函数间的调用关系
结构化程序设计方法 ◼ 自顶向下,逐步求精,函数实现 自顶向下:程序设计时,应先考虑总体步骤,后考虑步 骤的细节;先考虑全局目标,后考虑局部目标。先从最 上层总目标开始设计,逐步使问题具体化。不要一开始 就追求众多的细节。 逐步求精:对于复杂的问题,其中大的操作步骤应该再 将其分解为一些子步骤的序列,逐步明晰实现过程。 函数实现:通过逐步求精,把程序要解决的全局目标分 解为局部目标,再进一步分解为具体的小目标,把最终 的小目标用函数来实现。问题的逐步分解关系,构成了 函数间的调用关系
函数设计时应注意的问题限制函数的长度。一个函数语句数不宜过多,既便于阅读、理解,也方便程序调试。若函数太长,可以考虑把函数进一步分解实现。■避免函数功能间的重复。对于在多处使用的同一个计算或操作过程,应当将其封装成一个独立的函数,以达到一处定义、多处使用的目的,以避免功能模块间的重复。减少全局变量的使用。应采用定义局部变量作为函数的临时工作单元,使用参数和返回值作为函数与外部进行数据交换的方式。只有当确实需要多个函数共享的数据时,才定义其为全局变量
◼ 限制函数的长度。一个函数语句数不宜过多,既便于阅 读、理解,也方便程序调试。若函数太长,可以考虑把 函数进一步分解实现。 ◼ 避免函数功能间的重复。对于在多处使用的同一个计算 或操作过程,应当将其封装成一个独立的函数,以达到 一处定义、多处使用的目的,以避免功能模块间的重复。 ◼ 减少全局变量的使用。应采用定义局部变量作为函数的 临时工作单元,使用参数和返回值作为函数与外部进行 数据交换的方式。只有当确实需要多个函数共享的数据 时,才定义其为全局变量。 函数设计时应注意的问题
10.2汉诺塔问题10.2.1程序解析10.2.2递归函数基本概念10.2.3递归程序设计
10.2 汉诺塔问题 10.2.1 程序解析 10.2.2 递归函数基本概念 10.2.3 递归程序设计