Next Fibonacci Number(下一個斐波拉契數(shù)列)

Write a program that takes input of integer N, followed by N more integers.

For each integer, output the next fibonacci number after it.

Fibonacci number: Any number that belongs to the fibonacci series.

Constraints:

Your program should run correctly for the first 69 Fibonacci numbers.

Your output lines should not have any trailing or leading whitespace.

Input

3

1

9

22

Output

2

13

34


Explanation: 2 is the next fibonacci number greater than 1, the fibonacci number that comes after 9 is 13. 34 is the next fibonacci number after 22.

英文描述

英文描述請參考下面的圖已维。

中文描述

根據(jù)給定的值,返回這個值后面的下一個斐波拉契數(shù)列中的下一個數(shù)。

在斐波拉契數(shù)列中存儲 60 個?斐波拉契數(shù)。

例如,給定整數(shù) 1惶洲,那么應(yīng)該返回的結(jié)果是 2 。因為給定整數(shù) 1 后面的下一個斐波拉契數(shù)是 2。

如果給定的數(shù)值是 9 的話赘娄,那么下一個斐波拉契數(shù)應(yīng)該是 13。

斐波拉契數(shù)列又譯為菲波拿契數(shù)列宏蛉、菲波那西數(shù)列擅憔、斐波那契數(shù)列、黃金分割數(shù)列檐晕。

用文字來說暑诸,就是費波那契數(shù)列由0和1開始,之后的費波那契系數(shù)就是由之前的兩數(shù)相加而得出辟灰。首幾個費波那契系數(shù)是:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233……(OEIS中的數(shù)列A000045)

思路和點評

首先計算斐波拉契數(shù)列个榕,然后將數(shù)值存儲到數(shù)組中。

定義一個數(shù)組芥喇,在這個數(shù)組中先存儲 60 個從小到大的斐波拉契數(shù)西采。

然后將給定的數(shù)值與數(shù)值中存儲的斐波拉契數(shù)進(jìn)行對比,這個時候你需要對數(shù)組中的斐波拉契數(shù)進(jìn)行遍歷继控。當(dāng)找到大于當(dāng)前給定的整數(shù)以后械馆,可以 Break 這次比對并且返回(輸出)這個值。

源代碼

源代碼和有關(guān)代碼的更新請訪問 GitHub:

https://github.com/cwiki-us/codebank-algorithm/blob/master/src/main/java/com/ossez/codebank/interview/ManNextFibonacciNumber.java

運行建議:

這個方法因為測試平臺的問題武通,我們沒有寫到測試類中霹崎。我們是直接定義了一個可以運行的類。

你可以在你的 Eclipse 平臺上冶忱,直接運行這個類玉锌。

在你運行類以后的 Console 控制臺窗口没佑,你首先需要輸入數(shù)字 3 ,這個數(shù)字 3 表示這次運行你需要進(jìn)行 3 次測試。

然后輸入測試數(shù)字鞋既,例如懈涛,你可以輸入測試數(shù)字 1了讨,那么麦射,程序?qū)敵?1 Next Fibonacci [2]。

這個與實際題目要求的有所差異括勺,你需要進(jìn)行調(diào)整缆八,而且題目是需要使用?System.out.println 輸出的谒臼,請注意我們在我們的源程序中注釋掉了這個輸出。

代碼思路請參考:

package?com.ossez.codebank.interview;

import?java.io.BufferedReader;

import?java.io.InputStreamReader;

import?org.slf4j.Logger;

import?org.slf4j.LoggerFactory;

/**

?*

?*?https://www.cwiki.us/display/ITCLASSIFICATION/Next+Fibonacci+Number

?*

?* @author YuCheng

?*

?*/

public?class?ManNextFibonacciNumber {

????private?final?static?Logger logger =?LoggerFactory.getLogger(ManNextFibonacciNumber.class);

????public?static?void?main(String[] args)?throws?java.lang.Exception?{

????????int?fArray[] =?new?int[60];

????????for?(int?i =?0; i <?60; i++) {

????????????fArray[i] = getFib(i);

????????}

????????BufferedReader br =?new?BufferedReader(new?InputStreamReader(System.in));

????????String input =?br.readLine();

????????//?System.out.println(fib(Integer.valueOf(input)));

????????for?(int?i =?0; i <?Integer.valueOf(input);?i++) {

????????????Integer inputInt =?Integer.valueOf(br.readLine());

????????????//?System.out.println(inputInt);

????????????for?(int?j =?0; j <?fArray.length;?j++) {

????????????????if?(fArray[j] > inputInt) {

????????????????????//?System.out.println(fArray[j]);

????????????????????logger.debug("{} Next Fibonacci [{}]", inputInt, fArray[j]);

????????????????????break;

????????????????}

????????????}

????????}

????}

????/**

?????* Get Fibonacci Number

?????*

?????* @param n

?????* @return

?????*/

????private?static?int?getFib(int?n) {

????????if?(n <?0) {

????????????return?-1;

????????}?else?if?(n ==?0) {

????????????return?0;

????????}?else?if?(n ==?1?|| n ==?2) {

????????????return?1;

????????}?else?{

????????????int[] fibAry =?new?int[n +?1];

????????????fibAry[0] =?0;

????????????fibAry[1] = fibAry[2] =?1;

????????????for?(int?i =?3; i <= n; i++) {

????????????????fibAry[i] = fibAry[i -?1] + fibAry[i -?2];

????????????}

????????????return?fibAry[n];

????????}

????}

}


測試結(jié)果

上面程序的測試結(jié)果如下:

3

1

2019/02/07?20:59:25?DEBUG [com.ossez.codebank.interview.ManNextFibonacciNumber]?-?1?Next Fibonacci [2]

9

2019/02/07?20:59:46?DEBUG [com.ossez.codebank.interview.ManNextFibonacciNumber]?-?9?Next Fibonacci [13]

22

2019/02/07?20:59:49?DEBUG [com.ossez.codebank.interview.ManNextFibonacciNumber]?-?22?Next Fibonacci [34]

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末耀里,一起剝皮案震驚了整個濱河市蜈缤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌冯挎,老刑警劉巖底哥,帶你破解...
    沈念sama閱讀 218,607評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異房官,居然都是意外死亡趾徽,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評論 3 395
  • 文/潘曉璐 我一進(jìn)店門翰守,熙熙樓的掌柜王于貴愁眉苦臉地迎上來孵奶,“玉大人,你說我怎么就攤上這事蜡峰×嗽” “怎么了?”我有些...
    開封第一講書人閱讀 164,960評論 0 355
  • 文/不壞的土叔 我叫張陵湿颅,是天一觀的道長载绿。 經(jīng)常有香客問我,道長油航,這世上最難降的妖魔是什么崭庸? 我笑而不...
    開封第一講書人閱讀 58,750評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮谊囚,結(jié)果婚禮上怕享,老公的妹妹穿的比我還像新娘。我一直安慰自己镰踏,他們只是感情好函筋,可當(dāng)我...
    茶點故事閱讀 67,764評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著余境,像睡著了一般驻呐。 火紅的嫁衣襯著肌膚如雪灌诅。 梳的紋絲不亂的頭發(fā)上芳来,一...
    開封第一講書人閱讀 51,604評論 1 305
  • 那天,我揣著相機與錄音猜拾,去河邊找鬼即舌。 笑死,一個胖子當(dāng)著我的面吹牛挎袜,可吹牛的內(nèi)容都是我干的顽聂。 我是一名探鬼主播肥惭,決...
    沈念sama閱讀 40,347評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼紊搪!你這毒婦竟也來了蜜葱?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,253評論 0 276
  • 序言:老撾萬榮一對情侶失蹤耀石,失蹤者是張志新(化名)和其女友劉穎牵囤,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體滞伟,經(jīng)...
    沈念sama閱讀 45,702評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡揭鳞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,893評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了梆奈。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片野崇。...
    茶點故事閱讀 40,015評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖亩钟,靈堂內(nèi)的尸體忽然破棺而出乓梨,到底是詐尸還是另有隱情,我是刑警寧澤清酥,帶...
    沈念sama閱讀 35,734評論 5 346
  • 正文 年R本政府宣布督禽,位于F島的核電站,受9級特大地震影響总处,放射性物質(zhì)發(fā)生泄漏狈惫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,352評論 3 330
  • 文/蒙蒙 一鹦马、第九天 我趴在偏房一處隱蔽的房頂上張望胧谈。 院中可真熱鬧,春花似錦荸频、人聲如沸菱肖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽稳强。三九已至,卻和暖如春和悦,著一層夾襖步出監(jiān)牢的瞬間退疫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評論 1 270
  • 我被黑心中介騙來泰國打工鸽素, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留褒繁,地道東北人。 一個月前我還...
    沈念sama閱讀 48,216評論 3 371
  • 正文 我出身青樓馍忽,卻偏偏與公主長得像棒坏,于是被迫代替她去往敵國和親燕差。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,969評論 2 355

推薦閱讀更多精彩內(nèi)容