专业IT网络知识平台,分享IT百科知识、生活百科知识解答!

易企推科技
易企推科技

编程教学入门教程,编程教学方法

来源:小易整编  作者:小易  发布时间:2023-03-22 04:25
摘要:编程教学入门教程,编程教学方法自信息技术新课标以Python语言作为核心编程语言推荐以来,Python编程与算法教学成为落实新课标课程目标的基础。如何在中小学Python编程与算法教学中,落实课标精神,围绕“算法以及基于算法的问题求解”这一...

1.构建问题场景

斐波那契数列从0和1开始,之后的斐波那契数列系数就由之前的两数相加。高中数学必修五在讲解数列前n项和的课后资料中提到了斐波那契数列,作为数学知识生活化、发展学生抽象思维能力的拓展。

斐波那契数列(Fibonacci sequence)因为相邻两项的比无限趋近于黄金比等性质,又称黄金分割数列。它是意大利数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”。假设一对刚出生的小兔子一个月后能长成大兔子,再过一个月便能生下一对小兔子,此后每个月生一对小兔子。如果不发生死亡,一年内逐月的小兔子对数是一组非常特殊的数字:1,1,2,3,5,8,13,21,34,55,89,144,……不难发现,从第三个数起,每个数都是前两个数之和,这个数列称为斐波那契数列。

在现代物理、准晶体结构、化学等领域,斐波那契数列都有直接的应用,斐波那契数列的通项公式表示如下图所示的公式(1)。

编程教学入门教程,编程教学方法

在算法教学中,斐波那契数列是最简单的递归定义函数,因此非常适合用来说明实现基本递归算法的方法。

2.简单递归实现算法

斐波那契数列的Python实现所需基本知识包括:使用if 语句实现简单迭代/循环、自定义函数、函数的递归定义。

斐波那契数列本身就是用递归形式定义的,Python是函数式编程语言,支持函数的递归定义,即函数体的内部包含对函数本身的调用。因此,公式(1)可以转换为一个合法定义的Python函数,并尝试让学生输出一些可很快通过人工验证的值(不要太大)(如下图)。

编程教学入门教程,编程教学方法

可以注意到,在计算最后一个值时是需要一点时间的。在上述的递归调用中,很多中间值要重复计算。如下图所示,在计算fib_1(4)时,fib_1(2)就重复计算了2次。显然,n的值越大,在计算fi b_1(n)的过程中,需要重复计算fib_1(k)(k<n)的次数就越多。

编程教学入门教程,编程教学方法

3.动态规划优化递归算法

为了优化斐波那契数列的递归实现,一个最简单的方法就是在每次计算中,将前面已经计算过的值“记忆”下来,不再重复计算。这种在计算过程中使用记忆的机制可以有效避免重复及浪费资源,是所谓动态规划方法的一个最简单的例子,动态规划就是指资源的动态再分配。动态规划实现需要涉及如下Python知识:Python字典、Python的Dict内建对象(一种特殊的Python字典)、对迭代器使用if语句。下图所示代码是一个带有记忆的版本。

编程教学入门教程,编程教学方法

作为对比,计算fib_2(20)会产生fib_2()的39次自调用;而若使用fib_1(),则计算fib_1(20)会产生21891次调用。

在Python中,任意对象只要定义了某种_next _()方法,就是一个迭代器。因此,Python中的容器类数据类型,如列表、元组、字典、集合、字符串等,都可以用于创建迭代器。有了迭代器的概念,迭代的概念就比较容易理解了:迭代就是从迭代器中依次抽取元素的过程。

4.装饰器优化递归算法

Python有一个内建的“装饰器”(decorator),可用于自动记忆任何函数。通过使用这个装饰器,计算斐波那契数列的函数可以更加简化。

以下实现使用Python的高级特性——Python装饰器语句。简单地讲,装饰器就是在不改变原来函数代码的情况下,给其增加一些附加功能,如上面记忆函数中间值的功能。

下图代码实现的函数fib_3()与fib_1()几乎完全相同,但使用了装饰器@functools.1ru_cache(),其中maxsize属性用来指示在函数的最近调用中应该缓冲多少次,设置maxsize=None表示对次数不做限制。

编程教学入门教程,编程教学方法

5.使用元组拆包优化递归算法


本文地址:IT百科频道 https://www.hkm168.com/tags/936278_2.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!


IT百科
小编:小易整编
相关文章相关阅读
  • 用U盘轻松实现一键重装系统的小白装机教程

    用U盘轻松实现一键重装系统的小白装机教程

    在现代社会,电脑已经成为人们生活中不可或缺的工具。然而,由于各种原因,我们有时候需要重装电脑系统来解决一些问题或提升性能。但是,对于一些小白用户来说,重装系统可能是一项困难的任务。因此,本文将介绍一款小白一键重装系统的u盘装机教程,帮助小白...

  • Python服务器编程:使用PyAudio进行音频处理

    Python服务器编程:使用PyAudio进行音频处理

    python是一种功能强大的编程语言,可以用于从简单的脚本到复杂的应用程序和服务器。pyaudio是python中一种流行的音频处理库,可以用于录制、播放和处理音频数据。在本文中,我们将探讨如何使用PyAudio来开发一个Python服务器...

  • 百度智慧课堂怎么使用?百度智慧课堂使用教程

    百度智慧课堂怎么使用?百度智慧课堂使用教程

    百度智慧课堂怎么使用?百度智慧课堂是一款可以再网上带给你丰富的线上学习服务的线上学习软件,很多名师教授在其中免费授课,是很多人在线提升自己的重要渠道,不过很多新用户并不懂得该如何正确使用该软件,下面就由小编为大家带来有关百度智慧课堂的使用教...

  • 解析如何解锁iPhone屏幕的教程,帮你解决手机被锁定的问题

    解析如何解锁iPhone屏幕的教程,帮你解决手机被锁定的问题

    你是否曾经遇到过忘记iphone的锁屏密码的情况?或者是否遭遇过熊孩子乱试密码导致iphone被锁定一个小时的情况呢?如果你曾经有类似的经历,需要快速解锁屏幕,那么可以考虑使用苹果屏幕解锁工具。这款工具是专为苹果用户设计的,可以帮助解锁苹果...

  • win7系统修复的详细教程

    win7系统修复的详细教程

    win7系统怎么修复呢?我们平时在使用电脑的过程中难免会遇到一些系统问题,有些系统问题比较严重,我们就需要对系统进行修复,修复系统的方法有不少,下面小编就跟大家分享一下win7系统修复的详细教程,感兴趣的小伙伴们快来看看吧!1、在开机启动的...

  • PHPChina学院Discuz基础视频教程资源分享

    PHPChina学院Discuz基础视频教程资源分享

    crossdaydiscuz!board(简称discuz!)是北京康盛新创科技有限责任公司推出的一套通用的社区论坛软件系统。自2001年6月面世以来,discuz!已拥有15年以上的应用历史和200多万网站用户案例,是全球成熟度最高...

  • 燕十八php视频教程:2023年最新燕十八php相关视频教程全集

    燕十八php视频教程:2023年最新燕十八php相关视频教程全集

    燕十八,原名刘道成,布尔教育教学总监。国内著名php培训讲师。燕十八和韩顺平以前为同事,都曾经在传智播客任php讲师。燕十八录制的php视频教程独特的“迭代式教学”方式,帮助众多编程爱好者,无痛苦入门编程,获得广大php学习者的喜爱!易企推...

  • win11wifi打开教程

    win11wifi打开教程

    在win11系统中,微软使用了最新的界面和菜单,因此很多朋友都不知道应该如何打开wifi网络了。首先我们需要拥有无线网络设备,才可以打开并连接wifi,下面就跟着小编一起来看一下win11wifi打开教程吧。win11怎么打开wifi1、首...

  • 周排行
  • 月排行
  • 年排行

精彩推荐