3, 递归
3.1 基线条件和递归条件
每个递归函数都有两部分: 基线条件 (base case) 和递归条件 (recursive case).
代码清单 3-1 递归
- # -*- coding:UTF-8 -*-
- def countdown(i):
- print i
- # 基线条件
- if i <= 0:
- return
- # 递归条件
- else:
- countdown(i-1)
- print countdown(5)
3.2 栈
栈是一种简单的数据结构.
代码清单 3-2 调用栈
- # -*- coding:UTF-8 -*-
- def greet(name):
- print "hello," + name + "!"
- greet2(name)
- print "getting ready to say bye..."
- bye()
- def greet2(name):
- print "how are you," + name + "?"
- def bye():
- print "ok bye!"
- greet("maggie")
- # result:
- # hello, maggie!
- # how are you, maggie?
- # getting ready to say bye...
- # ok bye!
代码清单 3-3 递归调用栈
- # -*- coding:UTF-8 -*-
- # 计算阶乘的递归函数
- def fact(x):
- if x == 1:
- return 1
- else:
- return x * fact(x-1)
- print fact(3)
递归指的是调用自己的函数.
每个递归函数都有两个条件 " 基线条件和递归条件.
栈由两种操作: 压入和弹出.
所有函数调用都进入调用栈.
调用栈可能很长, 这将占用大量的内存.
3, 递归
来源: http://www.bubuko.com/infodetail-3035007.html