作者 主題: 費式數列  (閱讀 3002 次)

0 會員 與 1 訪客 正在閱讀本文。

buddhaya7

  • 可愛的小學生
  • *
  • 文章數: 2
    • 檢視個人資料
費式數列
« 於: 2015-10-23 23:07 »
各位前輩好,我是這個網站的新手(剛剛辦而已),如有哪裡設定錯誤請見諒!
請教前輩一些python的問題,我想寫一個費式數列的程式,如輸入一個正整數,舉例是5,則輸出結果必須是:
Fib=0,1,1,2,3
如果輸入的是10,則輸出結果必須是:
Fib=0,1,1,2,3,5,8,13,21,34
如只考慮if、for等基本函數,不考慮太複雜的語法,請教該怎麼寫呢?謝謝

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5384
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
Re: 費式數列
« 回覆 #1 於: 2015-10-25 08:48 »
作業?

看起來是很簡單的功能, 簡單的 if/for 就能做出來, 有學過應該要會才對.
建議把書再看一看吧.

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17394
    • 檢視個人資料
    • http://www.study-area.org
Re: 費式數列
« 回覆 #2 於: 2015-10-25 13:24 »
python我不會,
換成bash的話:
代碼: [選擇]
n1=0
n2=1
max=${1-0}

if [ "$max" -le 1 ]; then
echo Not positive integer.
exit
fi

((max-=2))

echo -n "Fib=$n1,$n2"

for ((i=1;i<=$max;i++)); do
n=$((n1+n2))
echo -n ",$n"
n1=$n2
n2=$n
done
echo

buddhaya7

  • 可愛的小學生
  • *
  • 文章數: 2
    • 檢視個人資料
Re: 費式數列
« 回覆 #3 於: 2015-10-25 15:41 »
回twu2:是作業,但是課本教得比較簡單,老師出題有稍微難、變化;之前網路上爬文,網友大多是用特別的語法與函數來達成費式數列,比如匯入函式庫import等。
回netman:謝謝你的提供!

TWASA

  • 活潑的大學生
  • ***
  • 文章數: 269
  • 性別: 男
    • 檢視個人資料
Re: 費式數列
« 回覆 #4 於: 2015-10-26 09:09 »
數學不熟,不過參考python 2.x的官方文件,就這麼幾行而已
代碼: [選擇]
n = int(raw_input("Please enter an integer: "))

a, b = 0, 1
while b < n:
    print b,
    a, b = b, a+b