面試題:Fibonacci數列

題目描述:大家都知道斐波那契數列,現在要求輸入一個整數n,請你輸出斐波那契數列的第n項(從0開始,第0項為0)。

方法1:遞歸

public class Solution {public int Fibonacci(int n) {if (n == 0){return 0;} else if(n == 1){return 1;} else{return Fibonacci(n - 1) + Fibonacci(n - 2);}}
}

方法2:循環

public class Solution {public int Fibonacci(int n) {if(n == 0){return 0;}else if(n == 1){return 1;}else{int a = 0;int b = 1;int f = 0;for(int i=1;i<n;i++){f = a + b;a = b;b = f;}return f;}}
}

遞歸是函數調用函數自身,循環是通過初始值和終止條件在一個范圍內重復計算

基于遞歸實現的函數代碼簡單,但性能不如基于循環的方法,如果沒有別的要求優先使用遞歸

遞歸的缺點是函數的調用有時間和空間的消耗,并且遞歸中有許多重復的計算

類似題目:一只青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法(先后次序不同算不同的結果)。

public class Solution {public int JumpFloor(int target) {if(target == 0){return 0;}else if(target == 1){return 1;}else if(target == 2){return 2;}else{//遞歸//return JumpFloor(target-1)+JumpFloor(target-2);//循環int a = 1;int b = 2;int J = 0;for(int i=2;i<target;i++){J = a + b;a = b;b = J;}return J;}}
}

類似題目:一只青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法(數學歸納法2的n-1次方)。

public class Solution {public int JumpFloorII(int target) {return (int)Math.pow(2,(target-1));}
}

?

轉載于:https://www.cnblogs.com/Aaron12/p/9503761.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/451566.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/451566.shtml
英文地址,請注明出處:http://en.pswp.cn/news/451566.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

“行到水窮處,坐看云起時.“

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 自由自在&#xff0c;隨意而行&#xff0c; 只沿著流水向上&#xff0c;不知不覺的就走到了泉眼盡頭&#xff0c; 無路可走的時候 &…

git commit -m和git commit -am

字面解釋的話&#xff0c;git commit -m用于提交暫存區的文件&#xff1b;git commit -am用于提交跟蹤過的文件 要理解它們的區別&#xff0c;首先要明白git的文件狀態變化周期&#xff0c;如下圖所示 工作目錄下面的所有文件都不外乎這兩種狀態&#xff1a;已跟蹤或未跟蹤。已…

磁盤結構簡介

這里講的主要是網上所謂的老式磁盤&#xff0c;它是由一個個盤片組成的&#xff0c;我們先從個盤片結構講起。如圖1所示&#xff0c;圖中的一圈圈灰色同心圓為一條條磁道&#xff0c;從圓心向外畫直線&#xff0c;可以將磁道劃分為若干個弧段&#xff0c;每個磁道上一個弧段被稱…

java中的對象監視器

參考文章&#xff1a;監視器–JAVA同步基本概念 感謝作者分享&#xff01;

Yii1.1 CGridView 簡單使用

Yii1.1 CGridView 簡單使用 配置model文件&#xff0c;返回CActiveDataProvider對象。public function search() {$criterianew CDbCriteria;$criteria->compare(title,$this->title,true);$criteria->compare(type,$this->type);$criteria->compare(addr,$this…

3個著名加密算法(MD5、RSA、DES)的解析

MD5的全稱是Message-Digest Algorithm 5&#xff0c;在90年代初由MIT的計算機科學實驗室和RSA Data Security Inc發明&#xff0c;經MD2、MD3和MD4發展而來。 MD5將任意長度的“字節串”變換成一個128bit的大整數&#xff0c;并且它是一個不可逆的字符串變換算法&#x…

想念我的大大的石

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 // ------- 甘愿用我的一生去追尋 ... 想念我的大石頭&#xff1a; 想念會默默陪著我&#xff0c;一直從烈日咫尺坐到黃昏浸透蔓蔓云層…

Java 中的悲觀鎖、樂觀鎖、自旋鎖、適應性自旋鎖、偏向鎖、輕量級鎖、重量級鎖、公平鎖、非公平鎖、可重入鎖、共享鎖等

參考文獻&#xff1a; 不可不說的Java“鎖”事 java并發進階 感謝美團技術團隊&#xff01; 感謝JavaGuide&#xff01;

Git 的origin和master解析

首先要明確一點&#xff0c;對git的操作是圍繞3個大的步驟來展開的&#xff08;其實幾乎所有的SCM都是這樣&#xff09; 1. 從git取數據&#xff08;git clone&#xff09; 2. 改動代碼 3. 將改動傳回git&#xff08;git push&#xff09; 這3個步驟又涉及到兩個re…

end to end testing

概念 https://www.softwaretestinghelp.com/what-is-end-to-end-testing/ What is “End to End Testing”? Term “End to End testing” is defined as a testing method which determines whether the performance of an application is as per the requirement or not. It…

windows下安裝mysql 開機啟動

1 下載地址 http://dev.mysql.com/downloads/installer/ 2 下載版本 mysql community server 5.7.x 這個版本是一個傻瓜版本&#xff0c;設置root密碼之后就可以啟動服務了&#xff0c;不用自己配置&#xff0c;還有workbench可用。轉載于:https://www.cnblogs.com/hustdc/p/91…

Linux目錄架構詳解

Linux和Windows操作系統的顯著區別之一就是目錄架構的不同。Linux操作系統的目錄架構遵循文件系統層級結構標準。不知你是否使用ls命令瀏覽過Linux的根目錄“/”&#xff0c;親愛的讀者&#xff0c;您都了解這些目錄的含義嗎&#xff1f; ls -l / 遍歷文件系統&#xff08;點擊…

越陽光明媚....

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 窗外陽光明媚&#xff0c;而心卻如此哀傷... 很喜歡陽光明媚&#xff0c;很喜歡春暖花開&#xff0c; 窗外有幾片莊稼地&#xff1a;滿…

Linux的學習:

查看端口&#xff1a; netstat -anop | grep 80 netstat -ntlp 先看看不帶n的 再看看帶n的 我們發現在local address 即主機地址這一欄中&#xff0c;如果沒有帶n選項&#xff0c;會將套接字所對應的域名解析出來&#xff0c;如果加上n選項&#xff0c;那么就不會顯示&#xff…

基于TCP協議的Socket通信

參考文章&#xff1a; Socket學習網絡基礎準備 基于TCP協議的Socket通信(1) 基于TCP協議的Socket通信(2) 感謝菜鳥分享&#xff01;

git pull命令

git pull命令作用&#xff1a;從另一個存儲庫或本地分支關聯的遠端分支獲取最新代碼&#xff0c;并與本地代碼資源整合。git pull命令執行過程&#xff1a;取回遠程主機某個分支的更新&#xff0c;再與本地的指定分支合并&#xff08;可能存在需手動解決的沖突&#xff09;。 …

RPM的用法

RPM 有五種基本的操作方式(不包括創建軟件包): 安裝, 卸載, 升級, 查詢,和驗證。 下面我們就來逐一的講解吧。 一、 安裝RPM包 RPM 軟件包通常具有類似foo-1.0-1.i386.rpm 的文件名。其中包括 軟件包的名稱(foo)&#xff0c;版本號(1.0)&#xff0c;發行號(1)&#xff0c; 和 硬…

Unix 多進程編程

一.多進程程序的特點由于UNIX系統是分時多用戶系統, CPU按時間片分配給各個用戶使用, 而在實質上應該說CPU按時間片分配給各個進程使用, 每個進程都有自己的運行環境以使得在CPU做進程切換時不會"忘記"該進程已計算了一半的"半成品". 以DOS的概念來說, 進程…

Redis單線程模型是什么?

參考文章&#xff1a; redis 單線程的理解 謝謝作者分享&#xff01;

寂靜的時候

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 每每聽到熟悉的旋律&#xff0c;終又會驟然就無法抑制排山倒海般的憂傷... 就這樣想往若已經年邁到只能坐在夕陽余暉里遙望遠方該多好.…