主讲:相方莉.

Slides:



Advertisements
Similar presentations
许瑞云医师 你已经很努力地注意饮食、作息、运动, 为什么身体还不能恢复健康 ? 细节 答案就在「 细节 」裡, 唯有掌握关键的一步, 养生才能达到真 正的功效 ! 现在就让我们跟着曾是全球知名的哈 佛医院主治医师的许瑞云, 学习最正确 的养生方法, 轻松打下健康满分的基础 !
Advertisements

版 画 制 作版 画 制 作 版 画 种 类版 画 种 类 版 画 作 品版 画 作 品 刘承川.
数据结构的引入. 通讯录管理 社团机构管理 校园导航管理 通讯录管理 社团机构管理 校园导航管理.
1.2 应用举例 ( 一 ). 复习引入 B C A 1. 什么是正弦定理? 复习引入 B C A 1. 什么是正弦定理? 在一个三角形中,各边和它所对 角的正弦的比相等,即.
河內塔(Hanoi)問題.
ARM 嵌入式系统 第七章 嵌入式Linux.
親愛的老師您好 感謝您選用本書作為授課教材,博碩文化準備本書精選簡報檔,特別摘錄重點提供給您授課專用。 說明: 博碩文化:
第8章 函数 信息管理系.
每节一经典 用系统的观点观察问题 总体设计,逐步求精 计算机科学学院 王小明 (博士/教授/博士生导师)
计算学科的基本问题 本章首先介绍一个对问题进行抽象的典型实例——哥尼斯堡七桥问题。然后,通过“梵天塔”问题和“停机问题”分别介绍学科中的可计算问题和不可计算问题。从“梵天塔”问题再引出算法复杂性中的难解性问题、P类问题和NP类问题,证比求易算法,P=NP是否成立的问题。
液压舵机的工作原理和基本组成 一、泵控型液压舵机 二、阀控型液压舵机.
第5章 函数与模块化设计 学习目的与要求: 掌握函数的定义及调用方法 理解并掌握参数的传递方法 理解函数的嵌套与递归调用
4.3函数 4.3.1函数的概念及定义 1、函数的概念: 可以被其它程序调用具有 特定功能的一段相对独立的 程序(模块),称函数。
第5章 函数与预处理 《 C语言程序设计》 (Visual C++ 6.0环境) 本章导读
由C程序结构所知,一个完整的C语言程序是由一个且只能有一个main()函数(又称主函数)和若干个其他函数组合而成的。而前面各章仅学习main()函数的编程,本章将介绍其他函数的编程,包括其他函数的定义、调用、参数传递及变量的作用域等。
第八章 函数 §8.1 概述 一个较大程序一般分为若干个程序模块,每一个模块实现一个特定的功能。所有的高级语言中都有子程序的概念,在C中子程序就是函数。 一个C程序可由一个主函数和若干个函数构成,由主函数调用其它函数,其它函数也可以相互调用.
循环结构又称为重复结构:用来处理需要重复处理的问题,它是程序中一种很重要的结构。
多核结构与程序设计复习 2012年 杨全胜 东南大学成贤学院计算机系.
第4章 函数与预处理 4.1 概述 4.2 定义函数的一般形式 4.3 函数参数和函数的值 4.4 函数的调用 *4.5 内置函数
第七章 函数 目录 有参的加法函数的开发 函数定义的一般形式 函数参数和函数的值 函数的调用
第7章 函 数 本章要点: C语言程序结构和特点 函数的定义 函数的返回值与函数的类型 函数的调用及参数的传递关系 函数的嵌套与递归
C程序设计 谭浩强 著 清华大学出版社.
第八章 函数.
辅导课程六.
書名 Java於資料結構與演算法之實習應用
第7章 函 数 为什么要使用函数? 函数定义、调用、声明 局部变量和全局变量 变量的存储类别 内部函数和外部函数 函数的嵌套调用和递归调用
第7章 编译预处理 本章要求: 本章重点: 本章难点: 掌握用#define定义无参数宏和带有参数宏定义和调用方法;
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第三章 栈和队列 3.1 栈 3.2 栈的应用举例 3.3 栈与递归的实现 3.4 队列.
第五讲 四则运算计算器(一) 精品教程《C#程序设计与应用(第2版)清华大学出版社 谭恒松 主编
第7章 用函数实现模块化程序设计 7.1为什么要用函数 7.2怎样定义函数 7.3调用函数 7.4对被调用函数的声明和函数原型
Cyclic Hanoi问题 李凯旭.
第二章 Java语言基础.
动态规划(Dynamic Programming)
第七章 函数 西安工程大学.
第七章 函数及变量存贮类型 7.1 函数基础与C程序结构 7.2 函数的定义和声明 7.3 函数的调用 7.4 函数的嵌套与递归
第 4 章 递 归 教学要求 本章重点 了解递归算法的概念与递归设计要领 掌握应用递归算法求解排序与选择、实现排列组合等典型案例
实验九 函数嵌套、函数参数 第27讲 C程序设计 Main() { int x,y; X=10; y=x*x+1;
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C语言程序设计 主讲教师:陆幼利.
C语言大学实用教程 第5章 函数与程序结构 西南财经大学经济信息工程学院 刘家芬
Chap7 Recursive.
11.1 递归的定义 11.2 常见递归问题 11.3 递归的实现 11.4 递归转化为非递归的一般过程 11.5 递归的时间和空间复杂度
Main() { Dfas Asdfasf fasdfa } #include <stdio.h> void main( ) {
函数 概述 模块化程序设计 基本思想:将一个大的程序按功能分割成一些小模块, 特点: 开发方法: 自上向下,逐步分解,分而治之
C语言程序设计.
Chap 10 函数与程序结构 10.1 函数的组织 10.2 递归函数.
目录 7.1 用户自定义函数的种类 7.2 函数的定义 7.3 被调函数的声明 7.4 函数的调用 7.5 函数的嵌套调用
用计算器开方.
7.1 C程序的结构 7.2 作用域和作用域规则 7.3 存储属性和生存期 7.4 变量的初始化
1、递归的概念 2、递归函数的设计 3、递归过程与递归工作栈 4、例 5、递归过程的非递归化
C程序设计.
第5章 函 数.
第4章 Excel电子表格制作软件 4.4 函数(一).
資料結構與C++程式設計進階 遞迴(Recursion) 講師:林業峻 CSIE, NTU 6/ 17, 2010.
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
第九节 赋值运算符和赋值表达式.
用穷举法设计程序 南京师范大学 教育技术系 倪佳慧
3.16 枚举算法及其程序实现 ——数组的作用.
第二章 类型、对象、运算符和表达式.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
第1章 C++面向对象程序设计要点 1.1 函数和函数参数 1.2 输入输出   1.3 类 1.4 抽象类型和模板.
第7章 模板 陈哲 副教授 南京航空航天大学 计算机科学与技术学院.
第7章 用函数实现模块化程序设计 7.1为什么要用函数 7.2怎样定义函数 7.3调用函数 7.4对被调用函数的声明和函数原型
临界区问题的硬件指令解决方案 (Synchronization Hardware)
目录 12.1 位运算符 12.2 位域(位段) 1.
C++语言程序设计教程 第4章 函数 第4章 函数.
第六讲 酒店客房管理系统(二) 教育部“十二五”职业教育国家规划教材
隨機函數.
计算机编程 信息管理与工程学院 2014年9月.
Presentation transcript:

主讲:相方莉

这堂课的整体安排!单击每个图标,可以进入相应的模块!

B 1. 在调用函数时,如果实参是简单变量,它与对应 形参之间的数据传递方式是( ) 地址传递 单向值传递 由实参传给形参,再由形参传回实参 1. 在调用函数时,如果实参是简单变量,它与对应 形参之间的数据传递方式是( ) 答 案 地址传递 单向值传递 由实参传给形参,再由形参传回实参 传递方式由用户指定 B 恭喜您!答对了! 通过自己制作的摇奖程序活跃课堂气氛! 单击单选按钮进行测试。 对不起!答错了! 对不起!答错了! 对不起!答错了!

A 2.以下函数值的类型是( ) fun(float x ) { float y; y=3*x-4; return y; } 答 案 A 恭喜您!答对了! int 不确定 void float 单击单选按钮进行测试。 对不起!答错了! 对不起!答错了! 对不起!答错了!

7 3. 设有以下函数,则输出结果是 f( int a) { int b=0; int c = 3; b++; c++; return(a+b+c); } main() { int a = 2, i;  printf("%d\n",f(a)); } 7

函数的嵌套调用 函数的递归调用

§7.5 函数的嵌套调用 C语句不能嵌套定义函数,但可以嵌套调用函数. 也就是说在调用一个函数的过程中,又调用另一个函数。

eg:两层嵌套,其执行过程为: main 函数 a 函数 b函数 调用a函数 调用b函数 结 束

6 b(int x) { return(x+1);} a(int m, int n) {if(m>n) return(m); 想一想:输出结果是什么? b(int x) { return(x+1);} a(int m, int n) {if(m>n) return(m); else b(5);} main() { int m=3, n=8, r; r=a(m,n); printf("%d\n", r); } main 函数 调用a函数 a 函数 b函数 调用b函数 结 束 6

递归调用:在调用一个函数的过程中又出现直接 §7.6函数的递归调用 递归调用:在调用一个函数的过程中又出现直接 或间接的调用该函数本身的过程. 直接调用: int f(int x) {int y,z; z=f(y); return(2+z); } 间接调用: int f1(int x) int f2(int t) {int y,z; {int a,c; z=f2(y);} c=f1(a);}

有5个人坐在一起,问第五个人几岁?他说比第4个人大2岁。问第4个人,他说比第3个人大2岁。问第3个人,他说比第2个人大2岁。问第2个人,他说比第1个人大2岁。最后问第1个人,他说是10岁。请问第5个人是多大。 求第5个人的年龄 age(5)=age(4)+2 age(4)=age(3)+2 age(3)=age(2)+2 age(2)=age(1)+2 age(1)=10 age(n)=10 (n=1) age(n)=age(n-1)+2 (n>1)

age(int n) {int c; if(n= =1) c=10; else c=age(n-1)+2; return(c); } main() { printf(“%d”,age(5)); } 运行结果: 18

age(5)=18 age(5)=age(4)+2 age(4)=16 =age(3)+2 age(3)=14 =age(2)+2 age(2)=12 =age(1)+2 =10

汉诺塔 汉诺塔是一种古老的数学问题,是指在“A”柱上从下向上依次放着从大到小的一叠盘子,要把该柱上的盘子全部搬到指定的 “C”柱,在搬运过程中,可以利用“B”柱来协助搬移,但每次只允许移动一个盘子,且在移动过程中始终保持大盘在下,小盘在上。试问怎样搬移盘子?最少需要搬几次才能把“A”柱上的全部盘子移至“C”柱? A B C

通过让学生上来玩游戏,在玩的过程中体会”汉诺塔”的算法!

void move(char x,char y) { printf(“%c- - >%c\n”,x,y); } main() {int m; printf(“input the number of diskes:”); scanf(“%d”,&m); printf(“the step to moving %3d diskes:\n”,m); hanoi(m,’A’,’B’,’C’); }

将n个盘从A座借助B座,移到C座 A B C void hanoi(int n,char A,char B,char C) 需要搬的盘子的个数 借助位置 起始位置 目的地 将n个盘从A座借助B座,移到C座 void hanoi(int n,char A,char B,char C) {if(n==1)move(A,C); A B C

将n个盘从A座借助B座,移到C座 A B C void hanoi(int n,char A,char B,char C) 需要搬的盘子的个数 借助位置 起始位置 目的地 将n个盘从A座借助B座,移到C座 void hanoi(int n,char A,char B,char C) {if(n==1)move(A,C); else{ hanoi(n-1,A,C,B); A B C

将n个盘从A座借助B座,移到C座 A B C void hanoi(int n,char A,char B,char C) 需要搬的盘子的个数 借助位置 起始位置 目的地 将n个盘从A座借助B座,移到C座 void hanoi(int n,char A,char B,char C) {if(n==1)move(A,C); else{ hanoi(n-1,A,C,B); A B C move(A,C);

将n个盘从A座借助B座,移到C座 A B C void hanoi(int n,char A,char B,char C) 需要搬的盘子的个数 借助位置 起始位置 目的地 将n个盘从A座借助B座,移到C座 void hanoi(int n,char A,char B,char C) {if(n==1)move(A,C); else{ hanoi(n-1,A,C,B); A B C move(A,C); hanoi(n-1,B,A,C); }

从例题中可以看到,有些问题,采用递归的方法解决,会变得非常简单,且源程序也很简洁。 一个问题要采用递归的方法解决时,要符合以下条件: 1、可以把一个问题转化为一个新问题,而新问题的解决方案仍与原问题相同,只是问题的规模不同。它们只是有规律的递增或递减。 2、可以通过转化过程使问题得到解决。 3、必须有一个明确的结束递归的条件。

1.函数的嵌套调用: 在调用一个函数的过程中,又调用另一个函数。 2.函数的递归调用: 在调用一个函数的过程中,又调用它本身。

设计制作:相方莉 部 门:计算机应用系 制作时间:2008年12月 欢迎提供宝贵意见! susanxfl@163.com