任意一個自然數,如果它是偶數就除以2,如果它是奇數就乘以3再加上1,它們計算後的結果重復上述計演算法則,最終都會出現4-2-1這樣的結果。
我們今天用JS的方式找找這個規律。
那麽如何判斷一個數是偶數或是奇數呢?可以被2除盡的數就是偶數,不可以的就是奇數。JS裏有一個計算余數的方法%,用2去除數位,沒有余數的就是偶數,否則是奇數。
// 是否偶數
function
isEven
(
n
)
{
return
n
%
2
===
0
}
// 是否奇數
function
isOdd
(
n
)
{
return
n
%
2
!==
0
}
這次因為按照一定的運演算法則計算後的結果還得計算,那麽又得用到上次我們提到的遞迴函式。
好了,我們試著寫一個函式,來找找是不是所有的數用上面提到的運演算法則計算後都會出現4-2-1這樣的結果。
// 獲取4-2-1迴圈
function
fourTwoOne
(
n
)
{
//遞迴函式最後結束的條件
if
(
n
===
1
)
{
return
}
else
{
//switch語法,偶數就除以2
switch
(
isEven
(
n
))
{
case
true
:
n
/=
2
log
(
n
)
break
;
//奇數就乘以3加1
case
false
:
n
=
3
*
n
+
1
;
log
(
n
)
break
default
:
break
;
}
}
//遞迴
return
fourTwoOne
(
n
)
}
我們呼叫一下上面的函式,任意傳入一個數看看結果。
fourTwoOne
(
30
)
結果最後就是4-2-1,剩下的數位我就不演示了,感興趣的小夥伴可以自己嘗試一下。本次分享了一個有趣的數學現象。解決問題的關鍵就是如何區分偶數和奇數,然後運用遞迴函式得到我們想要的最終結果,感謝各位小夥伴的耐心閱讀,我們下次分享再見。
AE自制指令碼下載連結: