zoukankan      html  css  js  c++  java
  • 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提供了标准的二分查找实现)

     
     
  • 相关阅读:
    JAVA基础学习(7)之函数
    人与神话阅读笔记03
    学习进度八
    人月神话阅读笔记02
    NABCD原则
    人月神话阅读笔记01
    学习进度七
    学习进度六
    梦断代码阅读笔记03
    地铁系统初步思路
  • 原文地址:https://www.cnblogs.com/swefii/p/13471171.html
Copyright © 2011-2022 走看看