''' 递归 在函数内部,可以调用其它函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。 递归特性: 1.必须有一个明确的结束条件 2.每次进入更深一层递归时,问题规模相比上次递归都应有所减少 3.递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧, 每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以递归调用的次数过多,会导致栈溢出) ''' import time def calc(n): print(n) time.sleep(1) calc(n) def cala(n): print(n) if int(n / 2) == 0: return n return cala(int(n / 2)) cala(10) person_list = ['alex', 'wenhui', 'xiaoliu', 'laipang', 'lhf'] def ask_way(person_list): '''递归问路''' if len(person_list) == 0: return '没人知道' person = person_list.pop(0) if person == 'lhf': return '%s知道,在宝安区西乡街道金海路沃尔玛!' % person print('hi,美男%s,敢问路在何方' % person) print('%s说,我不知道,我帮你去问问%s' % (person, person_list)) res = ask_way(person_list) print('%s说' % person, res) return res # 递归调用函数时,都会等函数的一个结果(即返回值),返回值由里往外一层层返回,直到最外层; print(ask_way(person_list))