初学JS必备三大经典案例——回文数,水仙花数,斐波那契数列
文章目录
回文数
回文
- “回文”是指正读反读都能读通的句子,它是古今中外都有的一种修辞方式和文字游戏,如“我为人人,人人为我”等。
在数学中也有这样一类数字有这样的特征,成为回文数。(例如:121,222,323等等)
回文数实例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>回文数</title>
</head>
<body>
<script>
window.onload = function () {
for (var a = 1; a < 10; a++) {
if (a == a % 10) {
document.write(a + " ")
}
}
document.write("<br/>")
for (var b = 10; b < 100; b++) {
if (parseInt(b / 10) == b % 10) {
document.write(b + " ")
}
}
document.write("<br/>")
for (var b = 100; b < 1000; b++) {
if (parseInt(b / 100) == b % 10) {
document.write(b + " ")
}
}
document.write("<br/>")
for (var b = 1000; b < 10000; b++) {
if (parseInt(b / 1000) == b % 10 && parseInt(b / 100) % 10 == parseInt((b % 100) / 10)) {
document.write(b + " ")
}
}
}
</script>
</body>
</html>
水仙花数
- 水仙花数也被称为超完全数字不变数、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数
- 水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)
水仙花数只是自幂数的一种,严格来说3位数的3次幂数才称为水仙花数。
附:其他位数的自幂数名字
- 一位自幂数:独身数
- 两位自幂数:没有
- 三位自幂数:水仙花数
- 四位自幂数:四叶玫瑰数
- 五位自幂数:五角星数
- 六位自幂数:六合数
- 七位自幂数:北斗七星数
- 八位自幂数:八仙数
- 九位自幂数:九九重阳数
- 十位自幂数:十全十美数
水仙花数实例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>水仙花数</title>
</head>
<body>
<script>
window.onload = function () {
for (var a = 2; a < 1000; a++) {
var i = parseInt(a / 100);
var j = parseInt((a % 100) / 10);
var n = parseInt((a % 100) % 10);
if (a == (i * i * i) + (j * j * j) + (n * n * n)) {
document.write(a + " ")
}
}
}
</script>
</body>
</html>
斐波那契数列
斐波那契数列使用的是递归算法的思想.
那么什么是递归呢?
- 递归就是函数自身调用自身的一种重复过程
- 因此使用递归处理问题和使用循环处理问题有相同的一个特征就是都要无限递归(无限循环)
了解了递归以后,我们回过头再来看看什么是斐波那契数列
- 斐波那契数列又叫兔子数列
- 斐波那契数列就是一个数列从第三项开始第三项的值是第一项和第二项的和依次类推
斐波那契数列实例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>斐波那契</title>
</head>
<body>
<!-- 斐波那契 -->
<script>
window.onload = function () {
var num = prompt("请输入使用递归算法求指定位数的斐波那契数列的位数: ");
function fbnq(i) {
if (i == 1 || i == 2) {
return 2;
} else {
return fbnq(i - 1) + fbnq(i - 2);
}
}
for (n = 1; n <= num; n++) {
document.write(fbnq(n) + " " + " ")
}
}
</script>
</body>
</html>