1.递归函数
- 存在的问题:程序无限循环
- 递归函数的两部分:基线条件和递归条件
- 递归条件指的是函数调用自己;基线条件指的是函数不再调用自己,从而避免形成无限循环。
2.递归函数python实现
def countdown(i):
print(i)
if i<=1: #基线条件
return i
else: #递归条件
countdown(i-1)
if __name__ == '__main__':
countdown(5)
3.栈
- 两种操作:压入和弹出
- 调用栈:用于存储多个函数的变量
def greet2(name):
print("how are you,"+name+"?")
def bye():
print("ok bye!")
def greet(name):
print("hello,"+name+"!")
greet2(name) #调用greet2时,greet函数暂停并处于未完成状态,栈顶的内存块是greet函数的
print("getting ready to say bye...")
bye()
if __name__ == '__main__':
greet("maggie")
- 递归调用栈:递归函数的调用栈
#阶乘的递归函数
def fact(x):
if x == 1:
return 1
else:
return x * fact(x-1)
if __name__ == '__main__':
print(fact(5))
- 调用栈可能很长,会占用大量内存