c++ - 这个阶乘程序中发生了什么?

标签 c++ c factorial

当我编写以下代码时,我只是在使用递归来解决阶乘问题。

我知道我可以直接返回阶乘。但是我创建了一个变量结果并编写了下面的代码。 现在我想知道的是我还没有创建n(我想计算阶乘的数字)否。过程中的结果变量?因为每当调用我的函数阶乘时,都会创建结果变量,并且每个结果变量都会保存一些值。

long long factorial(long long param) { 
    long long result;
    if (param == 1)  return 1;
    else {
        result = param * factorial(param - 1);
    }
    return result;
}

我知道这不是一个好的代码,我没想到这会给我书面答案。但令我惊讶的是,它是。我想知道这个程序中发生了什么。

最佳答案

你的函数是一个递归函数。您可以在此处阅读有关递归和递归调试的信息:

https://www.programiz.com/cpp-programming/recursion

https://beginnersbook.com/2017/08/cpp-recursion/

关于c++ - 这个阶乘程序中发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57535299/

相关文章:

c++ - std::vector 成员的移动语义

c - C 中的 fclose() 函数默认附加 EOF 字符吗?

C 检查数组中是否存在空间,如果不存在则重新分配更多空间?

c++ - 在一个线程中新建并在另一个线程中删除,不允许吗?

c++ - 如何将字符串分配给 MessageBox C++?

java - 仅使用一个递归函数计算 1 到 n 的阶乘之和

algorithm - 快速计算 n! mod m 其中 m 是素数?

c - 无法在递归函数中返回正确的变量值

c++ - 无法在 C++ 中重载 Dot '.' 运算符

c - Linux C语言管道、 fork 和信号