【发布时间】:2011-08-11 20:27:33
【问题描述】:
谁能给我解释一下?我在 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;
}
有人可以向我解释它是如何工作的吗?谢谢。
【问题讨论】:
-
您实际上可以将代码复制到您的 C# 程序中,它应该可以工作。基本上它是一个递归函数/方法。
-
它是如何工作的?尝试手动模拟它,例如对于数字 = 5,你会很容易理解它;)
-
LLS:问题是,我不明白什么是递归函数。 :\ 主要部分是令人困惑的 C++ 代码中的第 4 行。 @digEmAll:我试过了,但我仍然对第 4 行感到困惑。 :(
-
从逻辑上而不是编程上考虑它。它的说法取前一个阶乘(它的相同函数无关紧要,它恰好是)并将它乘以 n。
-
@david:我明白了。我只是想告诉你,你根本不需要知道任何关于 C++ 的知识。而且我相信别人会给你很好的解释。
标签: c# c++ loops recursion factorial