面試必考07 遞迴演算法題總結

2021-09-29 09:56:06 字數 1833 閱讀 3915

遞迴和非遞迴方法都要掌握

1. 斐波那契數列

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

n<=39

public

class

test07

int num1=0;

int num2=1;

while

(n>0)

return num1;

}//遞迴寫法

public

intfibonaci2

(int n)

if(n==0)

if(n==1)

return

fibonaci2

(n-1)+

fibonaci2

(n-2);

}}

2. 跳台階

乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法(先後次序不同算不同的結果)。

public

class

test08

if(target==2)

return

jump

(target-1)

+jump

(target-2)

;}//非遞迴方法

public

intjump2

(int target)

int num1=1;

int num2=2;

while

(target>1)

return num1;

}}

3. **跳台階

乙隻青蛙一次可以跳上1級台階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上乙個n級的台階總共有多少種跳法。

f(n)=2*f(n-1)

public

class

test09

if(target<=1)

return2*

jumpfloorii

(target-1)

;}//非遞迴

public

intjumpfloorii2

(int target)

if(target<=1)

int num=1;

while

(target>1)

return num;

}//用數學公式

public

intjumpfloorii3

(int target)

}

4. 矩形覆蓋

我們可以用21的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個21的小矩形無重疊地覆蓋乙個2*n的大矩形,總共有多少種方法?

思路:只有兩種情況:

①乙個2×1矩形(橫著)和乙個2×(n-1)矩形

②兩個2×1矩形(豎著)和乙個2×(n-2)矩形

public

class

test10

if(target<=2)

return

rectcover

(target-1)

+rectcover

(target-2)

;}//非遞迴

public

intrectcover2

(int target)

if(target<=2)

int num1=1;

int num2=2;

while

(target>1)

return num1;

}}

Leetcode 演算法題07

169.majority element 輸入乙個列表,找出其中出現次數超過列表長度一半的數 我的 class solution object def majorityelement self,nums type nums list int rtype int count collections.c...

2018前端必考面試題總結7

var oul document.getelementbyid ul if oul.firstelementchild else 2 關於使用event物件,出現的相容性問題 獲取event物件相容性寫法 var oevent ev event document.onclick function e...

2018前端必考面試題總結8

官方 解釋 所謂 閉包 指的是乙個擁有許多變數和繫結了這些變數的環境的表示式 通常是乙個函式 因而這些變數也是該表示式的一部分。通俗來講 就是函式a的內部函式b,被函式a外部的乙個變數引用的時候,就建立了乙個閉包。functiona return b var c a 變數c實際上是指向了函式b c ...