遞迴和非遞迴方法都要掌握
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 ...