1、第 1 页做出判断的分支2.2编制程序实现对垃圾类型的分类判断功能简介如果 输入“猪可以吃”显示 “这是厨余垃圾(湿垃圾)”如果 输入“猪吃了会死”显示 “这是有害垃圾如果 输入“猪不吃”显示 “这是其他垃圾(干垃圾)”如果 输入“卖了可以买猪”显示 “这是可回收垃圾”其他 显示 “输入错误,请重新输入”算法设计4.1.24.1.2自定义函数、迭代法和递归法自定义函数、迭代法和递归法 教科版信息技术 必修1 数据与计算第 2 页单分支流程图 本节课学习目标本节课学习目标1、掌握自定义函数的含义并会运用自定义函数解决问题2、运用迭代法实现简单算法,解决问题3、运用递归法实现简单算法,解决问题第
2、3 页单分支流程图 一、自定义函数一、自定义函数:1.代码复用。程序中多处用到功能相似或相同的代码时可以用代码复用的方法来提高程序的效率。通常使用“函数”和“模块”等方法实现。代码复用可以减少重复编写代码的工作量,也可以使程序的结构更加清晰。2.函数。函数分为系统函数和用户自定义函数。系统函数即函数库里的标准函数,是程序设计语言或操作系统提供给用户的一系列已经编写好的程序。如 print()函数和 input()函数等。用户自定义函数是用户自己编写的程序代码。一般包括函数名、参数、返回值和函数体等四个部分。定义的格式如下:基本格式:def 函数名(参数):语句或语句组 return 返回值需要
3、说明的是:(1)函数名和函数体必不可少;(2)参数是用来向函数传递值的,可以省略(空括号不能省略);参数也可以有多个,中间用“,”分隔;(3)函数执行完毕,由return语句将值返回给调用者;如果没有返回值,该语句可以省略;(4)采用函数名(参数列表)的方式调用函数。第 4 页单分支流程图 二二、迭代法迭代法:1.迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程。选代算法是用计算机解决问题的一种基本方法,它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值作为新一轮计算的输入。2.
4、迭代法求解问题的三个步骤:(1)确定迭代变量;(2)建立迭代关系式;(3)控制迭代过程。打开百日冲刺书第49页看选择题第13题第 5 页单分支流程图 斐波那契数列:斐波那契数列:指的是这样一个数列:指的是这样一个数列:1,1,2,3,5,8,13,21,34,55,89.这个数列从第这个数列从第3项开始,每一项都等于前两项之和。项开始,每一项都等于前两项之和。斐波那契数列的定义者,是意大利数学家莱昂纳多斐波那契数列的定义者,是意大利数学家莱昂纳多斐波那契,斐波那契,1202年,他撰写了年,他撰写了算盘全书算盘全书 斐波那契数列,又称黄金分割数列,因数学家莱昂纳多斐波那契以兔子繁殖为例子而引入,
5、故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n 2,n N*)第 6 页单分支流程图 典型例题:典型例题:阅读下列斐波那契数列应用的Python代码,完成13题。def fib(n):fl=f2=1 for i in range(3,n+1):f1,f2=f2,return n=int(input(请输人需要计算的月份数:)print(兔子的总对数:,fib(n)1.在处的表达式应该是()A.f1 B.f(n)C.fl+f2 D.fib(n)
6、2.在处函数返回的值为()A.f1 B.f2 C.f1+f2 D.fib(n)3.函数调用结束时i的值为()A.n B.n+1 C.n-1 D.f1+f2 第 7 页单分支流程图 三三、递归递归法法:1.递归,顾名思义,分为递推和回归。指一种通过重复将问题分解为同类的子问题,从而解决问题的方法。递归算法通过调用程序自身来实现。2.使用递归算法需确定的两个条件:(1)递推关系;(2)边界条件(即递归退出的条件)。3.递归与迭代:(1)递归与送代算法都需要重复执行某些代码;(2)递归是重复调用函数自身,遇到满足终止条件时逐层返回;迭代是重复反馈过程的活动,其目的是通近所需目标或结果,通常使用计数器
7、结束循环。打开百日冲刺书第55页看典型题析题目第 8 页单分支流程图典型例题:典型例题:以下为用递归算法求自然数n的阶乘的Python程序,横线处的代码应为()def fact(n):if n=0:return 1 else:return n=int(input(“请输入一个整数:)print(fact(n)A.n*fact(n-1)B.n*(n-1)*(n-2)*.*(1)C.n*(n-1)D.fact(n-1)分析:本题考查的是递归表达式,要确定递推关系。例如,求fact(4)的过程如下:fact(4)=4*fact(3)=4*(3*fact(2)=4*(3*(2*fact(1)=4*(3
8、*(2*(1*fact(0)第 9 页单分支流程图学生活动:考试真题学生活动:考试真题 提问学生提问学生 先做后讲先做后讲1、已知a,b,c是三角形的三条边,p为三角形的半周长,即p=(a+b+c)/2,计算三角形面积S的海伦公式为:求当a,b,c的值分别为3,4,5时,三角形的面积。import math#导入数学模块def hl(a,b,c):#定义求三角形面积的函数 p=s=math.sqrt()#sqrt用于计算算术平方根 return#返回面积的值a,b,c=3,4,5#边长依次赋值print(此三角形的面积S为:,hl(a,b,c)2、打开文件“考生文件夹671斐波那契数列.py”
9、,完善fib函数并保存。实现功能:用递归法求斐波那契数列1,1,2,3,5,8,第n项的值。def f(n):#定义递归函数 if n=1 n=2:return 1 else:return n=int(input(请输入正整数n的值:)print()#打印结果第 10 页单分支流程图学生活动:考试真题学生活动:考试真题 提问学生提问学生 先做后讲先做后讲3、求m和n的最大公约数。(mn,m,n均为自然数)def f(m,n):#递归定义函数,求m和n的最大公约数 if =0:#m可以被n整除 return n#求得最大公约数 :q=m%n return f(n,q)a=int(input(请输入第一个正整数:)b=int(input(请输入第二个正整数:)print()