看板 NTUBIME100HW 關於我們 聯絡資訊
: 第七題:(10分) :   請計算並列印出費朋納西序列(Fibonacci sequence)之前二十項, : 請注意列印之每一行共有五個數(合計四行)。 :   提示:費朋納西序列為 1, 1, 2, 3, 5, 8, 13, 21, 34,..... : ─────────────────────────────────── : 答案欄:(空間不夠時請寫於背面) 網站公佈正解是使用遞迴來解 但遞迴是三小朋友我不知道 我提供我的土法煉鋼做法, 大家笑笑就好 #include "stdafx.h" #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { int value1=0; int value2=1; int temp=0; for(int i=1;i<=20;i++) { cout << value2<<"\t"; temp=value2; value2=value1+value2; value1=temp; if(i%5==0) { cout<<endl; } } system("PAUSE"); return 0; } 可能有人看不懂, 我解釋一下 費式數列是後面一項等於前面兩項之和這是廢話我不贅述 所以我用兩個變數value1, value2來紀錄要相加的兩項 然後把原本的value2值要存進value1, value1+value2存進value2 以做於下次要呈現後面的項數, 要拿來加的新value1 value2 value1=value2; value2=value1+value2; 但是發生了錯誤, 我先做存進value1的動作, 然後下面要存進value2的兩項之和的value1卻已不是原本的, 是先被我更新過的 所以我製造變數temp 這個拿來當做暫存檔 讓 temp=value2; value2=value1+value2; 也就是說 相加的那兩項還是原本的 之後再 value1=temp; 再把暫存檔存進我要存進的value1裏 就是這樣 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.241.27
chaochienyao:又有階層的FU了 11/21 22:28