用递归方式来封装阶乘函数,在喇叭花数的函数中调用报错
# 具体遇到的问题
老师好,我用递归的方式来写的阶乘函数,测试也是正常的,但是在喇叭花的函数中调用之后控制台报错如下。请老师帮忙讲解程序哪里写的不对。
# 报错信息的截图
# 粘贴全部相关代码,切记添加代码注释(请勿截图)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
// 阶乘
function jc(n) {
if (n==1) return 1;
return n*jc(n-1);
}
// 喇叭花
function flower() {
for (var i=100;i<1000;i++) {
var is=i.toString();
var a=is[0];
var b=is[1];
var c=is[2];
if(jc(a)+jc(b)+jc(c)==i) {
console.log(i);
}
}
}
flower();
</script>
</body>
</html>
正在回答
同学你好, 因为喇叭花数的函数中十位和个位可能是0 ,但是递归方式封装的阶乘函数中没有考虑传入的参数值为0的情况,所以导致效果不对。
建议:将jc函数中的判断条件改为小于等于1。
祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星