第 5 课 函数、作用域与递归

第 5 课 函数、作用域与递归

注意标准库文档入门教程

课程纲要

变量

  • 函数(必须掌握):接收输入、提供输出的东西

    • 关键字def 与参数:定义一个 echo()(回声),参数、默认参数和关键字参数

    • 返回值和 return 语句:

    • def function_name:
      do_something()
        return something 
    • None 值:NoneType数据类型,如果你不返回任何值。(type)

    • 诀窍:一个函数最好不要超过40行。

  • 作用域(掌握思想):

    • 起因:公用私用问题,保护数据。尽量不要使用全局变量。
    • 规则(不应该背下来):
    • 局部变量不能在全局作用域内使用
    • 局部作用域不能使用其他局部作用域内的变量
    • 全局变量可以在局部作用域中读取
    • global 关键字
  • 递归(掌握如何写递归函数):函数自己调用自己

    • 例子:

    • 从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?「从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?『从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?……』」

    • 直播例子

    • 数学归纳法:

      • 证明 「第一张骨牌会倒。」
      • 证明 「只要任意一张骨牌倒了,其下一张骨牌也会因為前面的骨牌倒而跟著倒。」
      • 则可下结论:所有的骨牌都会倒下。
    • 如何写递归函数:

    • 确定初始条件和函数的作用

    • 由"情况 n" 变化到"情况 n+1"

    • 确定递归结束的条件

    • 题目:

    • 斐波那契数列 用递归做太慢,只借鉴思路。

    • 递归乘法

课后作业

  • 定义一个gcd(m, n)函数,该函数可以求出m与n的最大公约数,用辗转相除法递归实现。
  • 用递归实现阶乘函数factorial(n),对于任意的整数n都能返回其对应的阶乘。
  • 跳水板
订阅评论
提醒
guest
1 评论
最旧
最新 最多投票
内联反馈
查看所有评论
trackback

[…] | 博客 | […]