递归特性:
1必须有明确的结束条件
2递归规模每次降低
3递归效率偏低,容易导致栈溢出(函数是通过栈stack 这种数据结构实现的,调用一次函数,多增加一次栈帧,函数返回则减小一次,stack不是无限大,所以递归调用过多会导致溢出)
PEOPLE = ["sxj","abc","def","ghi","alex",'mm',"syc"] def ask_way(PEOPLE): "问路函数" print("-"*60) # 制作分隔符 if len(PEOPLE)==0: return print("no one Know") man = PEOPLE.pop(0) #每次删除一个人 if man == "alex": return "%s Know" % man else: print("HI,%s,do you know?" % man) print("I do not know,U can ask %s"%PEOPLE) res=ask_way(PEOPLE)# 形成循环 由于pop已经删除第一个,所以循环 print("%s say:"%man,res)# return res res=ask_way(PEOPLE) print(res) print(PEOPLE)
def test(n): print(n) if n/2==0: #判断语句 return n#使用return跳出递归循环 else: res=test(int(n/2)) print( res ) return res test(10) #递归至最深处,然后一层层向外反馈