遞歸方法
首先先解釋一下什么是遞歸函數(shù):什么是遞歸方法:就是一個方法敷鸦,自己調(diào)用自己
但是一定要注意控制好合適的跳出,不然就會死循環(huán)捏肢,如圖:
這種情況下就會出現(xiàn)死循環(huán)频轿,因為沒有跳出循環(huán)的語句
所以我們平時一定要注意,遞歸函數(shù)里調(diào)用函數(shù)本身的時候一定要要合理的控制循環(huán)跳出的語句痊银;比如我們來看一題很經(jīng)典的面試題抵蚊,請用遞歸方法算出1-20之間每個數(shù)的和
?function calc(num){
? ? ? ? ? ? //這個if是退出遞歸的條件
? ? ? ? ? ? if(num===1) {? ? //如果沒有這個if條件
? ? ? ? ? ? ? ? return num
? ? ? ? ? ? }
? ? ? ? ? ? return num + calc(num-1)? //
? ? ? ? }
console.log(calc(3))? //這里為了方便我們理解我們可以先用num===3替代進(jìn)去,具體的方式以及步驟分解可以看圖:
圖中我們可以先把3替代進(jìn)去溯革,得到3+calc(3-1)=>2+calc(2-1)=>calc(1)===1? 如圖:
紅筆處就是逆向操作贞绳,把值一步一步帶進(jìn)去最后就變成了3+2+1,所以3帶進(jìn)去最后得出來前三個數(shù)之和是6致稀,具體效果如下:
math對象
Math對象 里面提供的方法冈闭,可以幫助我們解決算術(shù)問題
今天我們就來列舉幾個我們常用的MAth對象
Math.random() 返回一個0到1之間的隨機數(shù)
abs() 返回一個數(shù)的絕對值
ceil() 向上取整
floor() 向下取整
max() 返回最大值
min() 返回最小值
pow() 返回指定數(shù)的次冪
round() 四舍五入
PI屬性,返回圓周率
sqrt()屬性抖单,開平方根
現(xiàn)在我們就來挨個介紹一下以上的幾種類型
1萎攒;Math.randow()用于返回一個0~1之間的隨機數(shù),但是有一點要注意就是這個數(shù)的取值范圍是這樣的[0,1)能取到零但是取不到1矛绘,所以當(dāng)你如果想取到1的時候一定要記得最后的時候+1耍休,但是你如果不需要取到1就不需要+1了,這邊我總結(jié)了幾點货矮,如圖羊精;
2:Math.abs()方法,返回的是一個數(shù)的絕對值
console.log(Math.abs(-551));=>//551? ? 這里就是相當(dāng)于我們以前上學(xué)時候數(shù)學(xué)課上的取絕對值
3:Math.ceil()用于向上取整囚玫,這個是Math對象里面比較重要的兩個其中一個喧锦,
比如 Math.ceil(55.1);=>//56? ?
4:Math.floor()方法用于向下取整,這個和ceil()方法一樣是比較重要的方法
比如Math.floor(55,9);=>//55
5;max() 返回最大值
console.log(Math.max(11,22,33,44,555,66,77));=>//77? 這個方法用于返回一段字符串中其中最大的那個值
6:min() 返回最小值
console.log(Math.max(11,22,33,44,555,66,77));=>//11? 這個方法用于返回一段字符串中其中最小的那個值
7:pow() 返回指定數(shù)的次冪
比如 Math.pow(58,5)抓督;=》這里相當(dāng)于是求58的5次方最后的答案是656356768
8:round() 四舍五入
? ? ? ? ? console.log(Math.round(55.6));
? ? ? ? ? ?console.log(Math.round(55.4));
其中需要說的是裸违,四舍五入這個方法,當(dāng)你穿的參數(shù)是負(fù)數(shù)的時候本昏,就不能用正常的整數(shù)思維去理解,而是要逆向思維下面是我列出來的幾點枪汪,負(fù)數(shù)是以.5為分界線涌穆,當(dāng)你的小數(shù)位置是>=-.5的時候怔昨,四舍五入直接把小數(shù)去掉就可以,但是當(dāng)你的小數(shù)位置<-.5的時候宿稀,你的四舍五入就要往后退一位(這個地位比較繞趁舀,可以參考下面這三行代碼立即)
? ? ? ? ? ?console.log(Math.round(-55.4)); ? //-55
? ? ? ? ? ?console.log(Math.round(-55.6)); ? //-56
? ? ? ? ? ?console.log(Math.round(-55.5)); ?//-55
9:PI屬性,返回圓周率? 就是π
比如 Math.PI();如圖:
10:sqrt()屬性祝沸,開平方根
比如 Math.sqrt(9);=>3? ?效果如下: