javascript求水仙花数(javascript 水仙花数)

1年前 (2023-09-06)阅读83回复0
阁瑞斯
阁瑞斯
  • 注册排名10018
  • 经验值0
  • 级别
  • 主题0
  • 回复0
楼主

水仙花数是指一个三位数,它的各个数字的立方和等于该数本身。比如说,153就是一个水仙花数,因为1³ + 5³ + 3³ = 153。而495就不是水仙花数,因为4³ + 9³ + 5³ = 408,而不是495。

在JavaScript中,判断一个三位数是否是水仙花数可以使用以下代码:

function isNarcissistic(num){
var sum = 0;
var numString = num.toString();
for(var i=0; i

上面的代码通过将数字转成字符串,然后使用for循环遍历每一位数字来计算它们的立方和。parseInt函数将字符串转为数字,而Math.pow函数用来计算指定数字的幂次方。

更进一步地,你可以通过一个循环来遍历所有的三位数,找出所有的水仙花数。以下是相应的代码:

var narcissistics = [];
for(var i=100; i<=999; i++){
if(isNarcissistic(i)){
narcissistics.push(i);
}
}
console.log(narcissistics); // [153, 370, 371, 407]

以上代码使用数组来存储所有的水仙花数,通过for循环遍历所有的三位数,并在每次循环中调用isNarcissistic函数来判断该数字是否为水仙花数,如果是的话就把它加入到数组中。

JavaScript中的水仙花数也可以使用递归的方式来判断。以下是相应的代码:

function isNarcissisticRecursive(num, total, digits){
if(digits == 0){
return total == num;
}
var digit = num % 10;
return isNarcissisticRecursive(Math.floor(num / 10), total + Math.pow(digit, 3), digits - 1);
}
console.log(isNarcissisticRecursive(153, 0, 3)); // true
console.log(isNarcissisticRecursive(495, 0, 3)); // false

以上代码使用了递归函数isNarcissisticRecursive来计算一个三位数是否是水仙花数。递归函数从最低位开始计算数字的立方和,并递归地向高位计算,直到所有位都被计算。

无论是使用循环还是递归,判断一个三位数是否是水仙花数的算法都非常简单和直观。当然,由于水仙花数只有四个,所以在实际开发中用处并不是特别大。但是这种算法可以帮助我们理解JavaScript的一些基本语法和编程思想,因此还是值得学习的。

本文可能转载于网络公开资源,如果侵犯您的权益,请联系我们删除。

本文地址:https://www.pyask.cn/info/1243.html

0
回帖

javascript求水仙花数(javascript 水仙花数) 期待您的回复!

取消
载入表情清单……
载入颜色清单……
插入网络图片

取消确定

图片上传中
编辑器信息
提示信息