找喇叭花数的程序死循环
<script>
// 先定义一个求阶乘的函数
function factorial(n){
// 累乘器
var result=1;
for(i=1;i<=n;i++){
result=result*i
}
return result;
}
// 喇叭花数的定义 一个数 他的个、十、百、位数的阶乘加起来刚好是它自己
// 题目是寻找100~999之间的喇叭花数
for( i=100;i<=999;i++){
// 将遍历到的数变为字符串 由此可以使用字符串的方法
var i_str=toString(i);
// 类型转换
var bai=Number(i_str[0]);
var shi=Number(i_str[1]);
var ge=Number( i_str[2]);
if(factorial(bai)+factorial(shi)+factorial(ge)==i){
console.log(i);
}
}
</script>
问题描述:
为什么我写的求喇叭花数的代码会在浏览器崩溃,死循环出现在哪里?请老师帮忙答疑
源自:函数
3-1 函数算法题(1)
20
收起
正在回答
1回答
同学你好,代码问题如下:
1、两个for循环中的i没有定义,导致调用factorial函数时改变的是外层的i值,所以会死循环。建议添加上var定义,或者两个for循环中的变量不同
2、toString()方法使用错误,数字应该在前调用,如下
自己再测试下,祝学习愉快!
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星