python递归两个经典

来源:互联网 发布:ios webview 请求优化 编辑:程序博客网 时间:2024/06/04 23:10
  • 阶乘
  • 二分查找

阶乘

#没有使用递归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)
0 0
原创粉丝点击