c# - 递归循环 (C#)

标签 c# c++ loops recursion factorial

有人可以给我解释一下吗?我在 C# 中编写了一个函数来计算这样的数字的阶乘:

public int factorial(int input)
{
    if (input == 0 || input == 1)
        return 1;
else
{
    int temp = 1;
    for (int i = 1; i <= input; i++)
        temp = temp * i;
    return temp;
    }
}

但我发现了一些 C++ 代码(顺便说一句,我真的不懂任何 C++),它使用递归循环找到阶乘:

int factorial(int number) {
 int temp;
 if(number <= 1) return 1;
 temp = number * factorial(number - 1);
 return temp;
}

有人可以向我解释一下它是如何工作的吗?谢谢。

最佳答案

好吧,它使用了 factorial(n)n * factorial(n - 1) 的事实,其基本情况为 n = 1.

例如:

factorial(5) = 5 * factorial(4)
             = 5 * 4 * factorial(3)
             = 5 * 4 * 3 * factorial(2)
             = 5 * 4 * 3 * 2 * factorial(1)
             = 5 * 4 * 3 * 2 * 1

实现只是使用这个递归定义。

关于c# - 递归循环 (C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5770597/

相关文章:

c# - 在 Compact Framework 中设置 LastWriteTime

c# - 如何使用 Css 文件更改按钮文本颜色 onclick 事件(asp.net、C#)?

Java删除数组中的冗余项

javascript - 从数组中删除虚假值

c# - 新的动态对象列表<>

c# - 大型线程任务处理程序的C#核心实现

c++ - 使用初始化列表作为函数参数实现 operator[] 的类对象示例

c++ - LoadString() 方法在 C++ 中不起作用

C++ STL unordered_map,线程安全,其中每个线程只访问它自己分配的键并可以编辑该值

audio - 在jPlayer中循环播放列表时如何消除延迟?