Python-18-递归经典案例

1.阶乘
使用循环实现:
def factorial(n):
   result = n
   for i in range(1, n):
     result *= i
   return result 

使用函数递归实现:

def factorial(n):
   if n == 1:
     return 1
   else:
     return n * factorial(n - 1) 

 

2.幂

普通实现:

def power(x, n):
   result = 1
     for i in range(n):
       result *= x
   return result

递归实现:

def power(x, n):
  if n == 0:     return 1   else:     return x * power(x, n - 1)

 

在大多数情况下,使用循环的效率可能更高。然而,在很多情况下,使用递归的可读性更高

 
3.二分查找
def search(sequence, number, lower, upper):
    if lower == upper:
       assert number == sequence[upper]
    return upper   else:     middle = (lower + upper) // 2     if number > sequence[middle]:       return search(sequence, number, middle + 1, upper)     else:
      return search(sequence, number, lower, middle)

 如果没有提供上限和下限,加一行这个即可:

def search(sequence, number, lower=0, upper=None):
    if upper is None: upper = len(sequence) - 1 

 

(实际上,模块bisect提供了标准的二分查找实现)

 
 
posted @ 2020-08-10 17:48  swefii  阅读(643)  评论(0编辑  收藏  举报