首页 > 编程语言 > 详细

一个斐波那契数列算法

时间:2020-04-25 10:38:02      阅读:60      评论:0      收藏:0      [点我收藏+]

面试现场的解决方案

这是我的笔试临场发挥,写的有点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.

一个斐波那契数列算法

原文:https://www.cnblogs.com/DeaconOne/p/12771637.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!