在递归因子函数中进行乘法的顺序是否存在差异,这取决于最后一个返回是否为形式为事实(n-1)* n与形式n *事实(n-1)相比较?
int fact(int n)
{
if (n<2)
return 1;
else
return fact(n-1)*n;
}
答案 0 :(得分:1)
根据乘法的交换律,fact(n-1)*n
和n*fact(n-1)
之间没有区别。
关于乘法运算的顺序,fact(n-1)*n
被评估为
(((1*2)*3)*4...)*n
和n*fact(n-1)
评估为
n*((n-1)*((n-2)*....3*(2*1)))
答案 1 :(得分:0)
乘法的顺序是否有差异 在递归因子函数中取决于是否最后返回 与形式n * fact(n-1)?
相比,形式为事实(n-1)* n
不会有任何区别
交换法则表示我们可以交换数字并仍然可以获得 同样的答案......
...当我们添加:
a + b = b + a
......或者当我们相乘时:
a×b = b×a
现在订单是的,肯定会改变
代表return fact(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;
和return n*fact(n-1);
fact(4) will return 4*fact(3);
fact(3) will return 3*fact(2);
fact(2) will return 2*fact(1);
fact(1) will return 1;
所以订单
2*1;
3*2;
4*6