关于JavaScript递归函数mlt输出337的原因咨询
代码输出337的原因解释
先拆解这个mlt函数的逻辑,它是用递归+加法模拟乘法运算:
- 第一个判断
!(a&&b):只要a或b是假值(比如0、undefined等),直接返回0,用来处理无效输入的边界情况。 - 第二个判断
b==1:任何数乘1都是它本身,所以直接返回a。 - 递归分支:当
b>1时,a*b等价于a + a*(b-1),所以递归调用mlt(a, b-1)再加上a,直到b变成1触发终止条件。
再看两次函数调用的执行结果:
mlt(3, 11):
相当于计算3×11,递归过程就是不断累加3,一共加11次,结果是33,所以这个调用输出33。mlt(7, 1):
触发b==1的条件,直接返回7,所以这个调用输出7。
因为document.write是连续输出内容的,不会自动添加分隔符,所以33和7连在一起就变成了337。
内容的提问来源于stack exchange,提问作者Romjan Ali
相关产品推荐
相关产品推荐

