- 3
- 0
- 约7.53千字
- 约 41页
- 2018-08-14 发布于江苏
- 举报
第7章 函数及指针
国家级精品课程网站(本书配套教学网站) 第7章 函数与指针 7.1 递归函数 7.2 函数重载 7.3 指针和函数 7.4 带参数的main()函数 7.5 内联函数 7.6 无参函数 7.7 void和const类型的指针 7.1 递归函数 1、递归调用 一个函数自己调用自己,这种调用称为递归调用。 2、递归调用的方式 (1)直接调用其本身 (2)通过其他函数间接地调用 3、一个问题是否可以转换为递归来处理必须满足以下条件: (1)必须包含一种或多种非递归的基本形式; (2)一般形式必须能最终转换到基本形式; (3)由基本形式来结束递归。 递归调用在堆栈中临时占据的存储区域是较多的,在实际运行时,递归调用的时间效率较差。 例7-1 采用递归算法求n! int fac(int n) { if(n0) // 不能求负数的阶乘 return ?1; else if(n==0) // 0的阶乘为1 return 1; else return n*fac(n-1); // n!为(n-1)!乘以n } 例7-2 梵塔(hanoi塔)问题 算 法: 如果只有1片金片时,只要直接将金片从A针移到C针上即可; 当n1时,就需要借助另外一个针来移动。将n片金片由A移到C上可以分解为以下几个步骤: (1) 将A上的n?1片金片借助C针移到B针上; (2) 把A针上剩下的一片金片由A针移到C针上; (3) 最后将剩下的n?1个金片借助A针由B针移到C针上。 步骤(1)和(3)与整个任务类似,但涉及的金片只有n?1个了。这是一个典型递归算法。 [例8-2] 梵塔(hanoi塔)问题 #include iostream using namespace std; const int N=3; //考察当金片数为3个时的情况 // 函数move():将金片由一根针移到另一根针上 void move(char from, char to) { cout From from to to endl; } // 函数 hanoi():将n片金片由p1借助p2移到p3上 void hanoi(int n, char p1, char p2, char p3) { if(n==1) move(p1, p3); else { hanoi(n-1, p1, p3, p2); move(p1, p3); hanoi(n-1, p2, p1, p3); } } // 测试用主函数 int main() { hanoi(N, A, B, C); return 0; } 7.2 函数重载 函数重载 一组参数和返回值不同的函数共用一个函数名。 函数重载使一个函数名具有多种功能,即具有“多种形态”,称这种形态为多态性。 当某个函数中调用到重载函数时,编译器会根据实参的类型去对应地调用相应的函数。匹配过程如下: (1)如果有严格匹配的函数,就调用该函数; (2)参数内部转换后如果匹配,调用该函数; (3)通过用户定义的转换寻求匹配。 例7-3 重载绝对值函数 #include iostream using namespace std; int abs(int x) { return x=0?x:-x; } double abs(double x) { return x=0?x:-x; } long abs(long x) { return x=0?x:-x; } int main() { int x1 = 1; double x2 = -2.5; long x3 = 3L; cout |x1| = abs(x1) endl; cout |x2| = abs(x2) endl; cout |x3| = abs(x3) endl; return 0; } 7.3 指针和函数 一. 指针作为函数的参数 二. 返回指针的函数 三. 指向函数的指针 一. 指针作为函数的参数 函数的参数不仅可以是基本数据类型的变量、对象名、数组名或函数名,而且可以是指针。 通过使实参与形参指针指向共同的内存空间,达到了参数双向传递的目的 二. 返回指针的函数 函数返回值也可以是一个地址 (如变量、数组和函数的地址,指针
您可能关注的文档
- 第3章 艺术构成(辅导版).ppt
- 第3章网络互连及网际协议(IP).ppt
- 第3章:孔及轴的极限与配合.ppt
- 第3篇 说服力工作型PPT该这样做(表格篇).pptx
- 第3章高分子材的结构与性能.ppt
- 第3节原子不规则排列-位错25.ppt
- 第3讲 制作D短片的软硬件要求.ppt
- 第3节 以畜牧业为主的农业地域类型3.ppt
- 第3讲(无线信、问题及解决).ppt
- 第3讲:轴线及柱子.ppt
- 中国国家标准 GB/T 6675.9-2025玩具安全 第9部分:化学及类似活动的实验玩具.pdf
- 《GB/T 6675.9-2025玩具安全 第9部分:化学及类似活动的实验玩具》.pdf
- GB/T 46975-2025婴童用品 便携式婴儿睡篮技术要求.pdf
- 中国国家标准 GB/T 46975-2025婴童用品 便携式婴儿睡篮技术要求.pdf
- 《GB/T 46975-2025婴童用品 便携式婴儿睡篮技术要求》.pdf
- 《GB/T 6675.14-2025玩具安全 第14部分:指画颜料要求和测试方法》.pdf
- GB/T 6675.14-2025玩具安全 第14部分:指画颜料要求和测试方法.pdf
- 中国国家标准 GB/T 6675.14-2025玩具安全 第14部分:指画颜料要求和测试方法.pdf
- 中国国家标准 GB/T 33772.3-2025质量评定体系 第3部分:印制板及层压板最终产品检验及过程监督用抽样方案的选择和使用.pdf
- 《GB/T 33772.3-2025质量评定体系 第3部分:印制板及层压板最终产品检验及过程监督用抽样方案的选择和使用》.pdf
原创力文档

文档评论(0)