1. 程式人生 > >python 列印斐波那契數列-使用遞迴函式版本

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分鐘。附一張資源消耗情況截圖(紅框中是遞迴函式的程序,消耗很驚人了,謹記謹慎使用遞迴):
這裡寫圖片描述