优化函数 《我正在学习的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) ;