zoukankan      html  css  js  c++  java
  • 一个斐波那契数列算法

    面试现场的解决方案

    这是我的笔试临场发挥,写的有点low。

    def fib(n):
        i,a,b = 1, 0, 1
        while True:
          if i < n:
            a, b = b, a+b
            i += 1
          else:
            return b
    

    思考:循环判断条件是不是可以优化?

    def fib(n):
        i,a,b = 1, 0, 1
        while i < n:
            a, b = b, a+b
            i += 1
        return b
    

    后来我又想,a, b = b, a+b,这一步分开赋值该怎么搞,于是:

    # a, b 分开赋值
    def fib(n):
        i,a,b = 1, 0, 1
        while i< n:
            temp = a + b
            a = b
            b = temp
            i += 1
        return b
    
    # 说明:这里必须要用一个中间变量来存储新推倒出来的值: a+b
    

    使用for循环方式

    # 迭代 斐波那契
    def fib(n):
        a,b = 1,1
        for i in range(n-2):
            a,b = b, a+b
        return b
    

    使用递归方式

    # 递归 斐波那契
    def fib(n):
        if n <= 2:
            return 1
        return fib(n - 1) + fib(n - 2)
    

    Enjoy your code, good luck.

    不积跬步,无以至千里。
  • 相关阅读:
    正式班D25
    解决oracle用户锁定
    python学习第17天
    python学习第16天
    python学习第15天
    python学习第十四天
    python学习第13天
    Python基础
    python学习第12天
    python学习第11天
  • 原文地址:https://www.cnblogs.com/DeaconOne/p/12771637.html
Copyright © 2011-2022 走看看