优化函数 《我正在学习的C++》中有一节教优化函数。p>
代码如下:优化函数 《我正在学习的C++》中有一节教优化函数。p>,c++,function,factorial,C++,Function,Factorial,代码如下: #include <iostream> using namespace std; int computeFactorials(int, int); int factorial(int); int main() { computeFactorials(1, 5); return 0; } int computeFactorials(int num, int max) { cout << "Factorial of " <&
#include <iostream>
using namespace std;
int computeFactorials(int, int);
int factorial(int);
int main() {
computeFactorials(1, 5);
return 0;
}
int computeFactorials(int num, int max) {
cout << "Factorial of " << num << ": ";
cout << factorial(num) << endl;
num++;
if(num > max)
return 0;
else
computeFactorials(num, max);
}
int factorial(int n) {
int result;
if (n == 1)
result = 1;
else
result = (factorial(n-1) * n);
return result;
}
我可以跟进num==3,但当它达到4时,我的逻辑与结果不符。我是这样读代码的:
强制因子1,5,1表示开始的数目,5表示循环的最大数目。我将从3开始,因为我理解1和2是num
阶乘3:阶乘3,然后在阶乘函数中,3减去1等于2,然后乘以3得到6
然而,当程序达到num等于4时,这似乎不再有任何意义。因为阶乘函数的int结果应该等于12而不是24
else result = (factorials (4-1) * 4) ;
3*4=12,而不是24。这个项目是如何达到24岁而不是12岁的?然后再次在num=5上做同样的事情,得到120而不是20
请帮助我理解,我对这门语言仍然很陌生,谢谢
然后在阶乘函数中,3减去1等于2,然后乘以3得到6
没有
在阶乘函数中,3减去等于2的1,然后在递归调用中将这2传递给阶乘:
阶乘2*3
=阶乘1*2*3
= 1 * 2 * 3
= 6
这个调用的结果是乘以3得到6的结果
这是因子n-1*n,不是n-1*n
然而,当程序达到num等于4时,这似乎不再有任何意义,因为阶乘函数的int结果应该等于12而不是24
如果factorial3是6,那么factorial4显然不能只有12,因为这只是6的两倍。它还不够成熟
阶乘3*4
=阶乘2*3*4
=阶乘1*2*3*4
= 1 * 2 * 3 * 4
= 24
3*4=12,而不是24
正确,但这不是4阶乘。4阶乘是1*2*3*4
我怀疑你有点混淆了。要理解递归,首先必须理解递归-里面的文字不难辨认,如果你在一个新的标签中打开图像,你可以看到它,你的评论是在浪费空间,谢谢。factorial3*4=factorial2*3*4=factorial1*2*3*4=1*2*3*4=24,不是吗?我想你还不清楚什么是factorial:它是递归,例如,展开n=4,基本上会得到4-1-1-1*4-1-1*4-1*4-1*4。或者1*2*3*4。再次感谢你,Lightness,在结束这一部分之前,我必须专注于清楚地理解阶乘
else result = (factorials (4-1) * 4) ;