- 阶乘
- 二分查找
阶乘
#没有使用递归
def factorial(n):
result = n
for i in range(1, n):
result *= i
return result
#使用递归
def factorial_1(n):
if n == 1: #出口
return 1
else:
return n * factorial_1(n-1)
可以注意到,递归是对自己的调用
但有一点注意的事,需要有出口
递归可以增加函数的可读性
在大多数情况下,可以和循坏相互替换
二分查找
def binary_search(sequence, number, lower, upper):
if lower == upper:
assert number == sequence[upper]
return super
else:
middle = (lower + upper) // 2
if number > sequence[middle]:
return binary_search(sequence, number, middle+1, upper)
else:
return binary_search(sequence, number, lower, middle)