什么是遞歸函數(shù)?這也是很經(jīng)典的面試題
簡(jiǎn)單來說就是一個(gè)方法,自己調(diào)用自己
注意:遞歸方法,一定要控制好何時(shí)跳出,否則就是死循環(huán)
例:使用遞歸算法1-20之間所有數(shù)之和
? ?function calc(num) {
? ? ? ? ? ? ? ? ? ? ? ? if (num === 1) {? ? ? ? ? ?//這個(gè)if是退出遞歸的條件
? ? ? ? ? ? return num? ? ? ? ? ? ? ? ? ? ? ? ? //如果num等于1,就停止調(diào)用不再執(zhí)行
? ? ? ? ? ? }
? ? ? ? ? ? return num + calc(num - 1)
? ? ? ? }
? ? ? ? console.log(calc(20));
例:實(shí)現(xiàn)系統(tǒng)菜單
function fun1() {
let menu = parseInt(prompt('1.添加 2.修改 3.刪除 4.查詢 0.退出'))
switch (menu) {
? ? ? ? ? ? ? ? case 1:
? ? ? ? ? ? ? ? ? ? alert('執(zhí)行添加')
? ? ? ? ? ? ? ? ? ? fun2()? ? ? ? //在方法內(nèi)部,又重新調(diào)用自己
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case 2:
? ? ? ? ? ? ? ? ? ? alert('執(zhí)行修改')
? ? ? ? ? ? ? ? ? ? fun2()
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case 3:
? ? ? ? ? ? ? ? ? ? alert('執(zhí)行刪除')
? ? ? ? ? ? ? ? ? ? fun2()
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case 4:
? ? ? ? ? ? ? ? ? ? alert('執(zhí)行查詢')
? ? ? ? ? ? ? ? ? ? fun2()
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? default:
? ? ? ? ? ? ? ? ? ? alert('歡迎下次繼續(xù)使用');
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? fun2()