python 打印斐波那契数列-使用递归函数版本

使用python打印出斐波那契数列的过程中需要特别注意的是数列中的值有前两项相加而来,所以需要两项同时赋值,不能分开赋值,分开赋值会导致数列变为等比数列

#!/usr/bin/python
#-*- coding:UTF-8 -*-
def fib(n):
  a=0
  b=1
  for i in range(n-1):
    a,b=b,a+b
  return a
print  fib(int(raw_input("数列中位置")))

或者使用递归函数,因为我又在环境中装了个python3所以递归函数使用python3的语法编写,跟上边的函数格式上有点不一样,请注意

#/usr/bin/python3
#-*- conding:UTF-8 -*-
def fin(n):
  if n==1 or n==2:
    return 1
  else:
    return fin(n-1) + fin(n-2) 
print (fin(int(input("请输入要计算的项:"))))

实测是正确的,但是使用递归的话会造成极大的资源消耗,计算前10项很快,计算第30项结果时耗时大约有1秒。计算第50项的结果耗时已经超过5分钟。附一张资源消耗情况截图(红框中是递归函数的进程,消耗很惊人了,谨记谨慎使用递归):
python 打印斐波那契数列-使用递归函数版本_第1张图片

你可能感兴趣的:(python)