Javascript can';我不懂计算的逻辑
一切都清楚了(4-1)*4=12 这里是我得到的困惑是递归调用吗?因为我们在内部返回fac函数,这是一种调用吗?我了解如何像本例中的console.log(fac(4));,但我不明白它是如何计算返回fac(n-1)*n的; 如果有人能解释计算是如何进行的,另一件事我不能理解代码在这两个例子中是不同的,一个只返回值,另一个返回什么?函数中的函数。。。。这就是我困惑的地方。Javascript can';我不懂计算的逻辑,javascript,Javascript,一切都清楚了(4-1)*4=12 这里是我得到的困惑是递归调用吗?因为我们在内部返回fac函数,这是一种调用吗?我了解如何像本例中的console.log(fac(4));,但我不明白它是如何计算返回fac(n-1)*n的; 如果有人能解释计算是如何进行的,另一件事我不能理解代码在这两个例子中是不同的,一个只返回值,另一个返回什么?函数中的函数。。。。这就是我困惑的地方。 谢谢你抽出时间 是,这是一个递归调用。函数继续调用自身并递减参数,直到传递的值为0。函数不返回自身,而是调用自身并返回结果。
谢谢你抽出时间 是,这是一个递归调用。函数继续调用自身并递减参数,直到传递的值为0。函数不返回自身,而是调用自身并返回结果。这是因为函数在作为参数传递0时终止并停止调用自身 就这样
fac(4)
->fac(3)*4
->fac(2)*3*4
->fac(1)*2*3*4
fac(0)*1*3*4
1*1*2*3*4
->24
这是5的阶乘的一个例子,但与4相同
请尝试以下链接了解更多信息:
是的,它被称为递归 为
fac(4)
计算的值如下:
function fac(n) {
if (n == 0)
return 1;
else
return fac(n - 1) * n;
};
console.log(fac(4));
//24
所以最终会是这样
fac(4) = fac(3) * 4
fac(3) = fac(2) * 3
fac(2) = fac(1) * 2
fac(1) = fac(0) * 1
fac(0) = 1
这就是它的求值方式,从而得到阶乘值。我认为这里有格式问题,应该是两个独立的代码块吗?
fac(4) = fac(3) * 4
fac(3) = fac(2) * 3
fac(2) = fac(1) * 2
fac(1) = fac(0) * 1
fac(0) = 1
fac(4) = 1 * 1 * 2 * 3 * 4