Python基础局部变量、全局变量,递归的特性——07

局部变量与全局变量

如果函数的内容无global关键字,优先读取局部变量,能读取全局变量,无法对全局变量重新赋值,但是对于可变类型,可以对内部元素进行操作。

如果函数中有global关键字,变量本质上就是全局的那个变量,可读取可赋值。

 

 

 

递归

特性:

1、必须有一个明确的结束条件

2、每次进入更深一层递归时,问题规模相比上次递归都应有所减少

3、递归效率不高,递归层次过多会导致栈溢出

例:

def calc(n):
    if int(n/2) == 0:
        return n
    return (int(n/2))
 
calc(10)
#运行结果是:
10
5
2
1

 

一个问路的例子:

person_list = ['winsdom','xl','hzz','hc']
def ask_way(person_list):
    if len(person_list) == 0:
        return '没有人知道'
    person = person_list.pop(0)
    if person == 'hc':
        return '%s说,我知道在哪,就在。。。往右走'%person
    print('%s说,我不知道怎么去,我帮你问问[%s]'%(person,person_list))
    return ask_way(person_list)

res = ask_way(person_list)
print(res)
#结果是:
winsdom说,我不知道怎么去,我帮你问问[['xl', 'hzz', 'hc']]
xl说,我不知道怎么去,我帮你问问[['hzz', 'hc']]
hzz说,我不知道怎么去,我帮你问问[['hc']]
hc说,我知道在哪,就在。。。往右走

 

posted @ 2018-05-26 17:10  婆娑者  阅读(359)  评论(0编辑  收藏  举报