Recursion 递归阶乘中的乘法顺序:n*fact()与fact()*n

Recursion 递归阶乘中的乘法顺序:n*fact()与fact()*n,recursion,factorial,Recursion,Factorial,在递归阶乘函数中执行乘法的顺序是否有差异,这取决于最后一次返回的形式是否为fact(n-1)*n,而不是n*fact(n-1) int事实(int n) { 如果(n根据乘法的交换定律,fact(n-1)*n和n*fact(n-1)之间没有区别 关于乘法运算的顺序,fact(n-1)*n计算为 (((1*2)*3)*4...)*n 而n*事实(n-1)被评估为 n*((n-1)*((n-2)*....3*(2*1))) 乘法运算的顺序有区别吗 在递归阶乘函数中,取决于是否最后返回 是否以事实

在递归阶乘函数中执行乘法的顺序是否有差异,这取决于最后一次返回的形式是否为fact(n-1)*n,而不是n*fact(n-1)

int事实(int n)
{

如果(n根据乘法的交换定律,
fact(n-1)*n
n*fact(n-1)
之间没有区别

关于乘法运算的顺序,
fact(n-1)*n
计算为

(((1*2)*3)*4...)*n
n*事实(n-1)
被评估为

n*((n-1)*((n-2)*....3*(2*1)))
乘法运算的顺序有区别吗 在递归阶乘函数中,取决于是否最后返回 是否以事实(n-1)*n的形式与n*事实(n-1)的形式进行比较

不,没有区别

交换定律说我们可以交换数字,但仍然可以得到 同样的答案

…当我们添加:

a+b=b+a

…或者当我们繁殖时:

a×b=b×a

现在来看订单是的,它肯定会改变

对于
返回事实(n-1)*n;

fact(4) will return fact(3)*4;
fact(3) will return fact(2)*3;
fact(2) will return fact(1)*2;
fact(1) will return 1;
如此有序

1*2;
2*3;
6*4;
2*1;
3*2;
4*6
对于
返回n*事实(n-1);

如此有序

1*2;
2*3;
6*4;
2*1;
3*2;
4*6

答案显然是一样的,但是乘法的顺序是怎样的呢?答案显然是一样的,但是乘法的顺序是怎样的呢?@Roope编辑了答案。为了清楚起见,在
((1*2)*3)*4…*n
n*((n-1)*((n-2)*..3*(2*1))中
最里面的乘法(1*2或2*1)将首先执行,然后是下一个最低的乘法(2*3或3*2),因此不,执行乘法的顺序没有区别。