任意一个自然数,如果它是偶数就除以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自制脚本下载链接: