计算机科学与编程导论 4章节 函数

一.局部变量和全局变量

    程序变量中使用的范围不同:作用域就是变量的有效范围。变量的作用域取决于变量的访问性。

局部变量:函数内部的变量称为局部变量,它的作用域仅限于函数内部, 离开该函数后就是无效的,再使用就会报错。

1.主函数中定义的变量也只能在主函数中使用,不能在其他函数中使用。

2.允许在不同的函数中使用相同的变量名,他们代表不同变量,分配不同的存放单元,互不相干,不会发生混淆。

3.复合语句中定义的变量,只限于使用当前函数中,也是复合语句的局部变量。

4.形参变量、在函数体内定义的变量都是局部变量。实参给形参传值的过程也就是给局部变量赋值的过程。

全局变量:在所有函数外部定义的变量称为全局变量,它的作用域默认是整个程序。它的作用域是从声明时刻开始,到程序结束。

1.全局变量定义必须在所有函数之外。

2.全局变量可加强函数模块之间的数据联系,但是函数又依赖这些变量,降低函数的独立性。

3.在同一源文件中,允许全局变量和局部变量同名,在局部变量作用域内,同名的全局变量不起作用。


二.递归

重点:递归步骤和基线条件。

def recurMul(a, b):

    if b == 1:#基线条件

        return a

    else:

        return a + recurMul(a, b-1)  #递归步骤

斐波纳契数

def fib(x):

assert type(x) == int and x >= 0 

    if x == 0 or x == 1:#基线条件

        return 1

    else:

        return fib(x-1) + fib(x-2)#递归步骤


三.回文

def isPalindrome(s): #函数,内部函数调用

    def toChars(s):#函数

        s = s.lower()#定义所有字符为小写

        ans = ''

        for c in s:

            if c in 'abcdefghijklmnopqrstuvwxyz':

                ans = ans + c

        return ans#返回重新生成的字符串

    def isPal(s):

        if len(s) <= 1:#基线条件

            return True

        else:

            return s[0] == s[-1] and isPal(s[1:-1])#递归步骤

return isPal(toChars(s))

你可能感兴趣的:(计算机科学与编程导论 4章节 函数)