函数递归

'''
递归
在函数内部,可以调用其它函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。

递归特性:
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))
while True: print('studying...')
原文地址:https://www.cnblogs.com/xuewei95/p/14550027.html