int factorial(int n) {
if (n < 0) {
throw ArgumentError('The input number should be a non-negative integer.');
}
if (n == 0) return 1;
int result = 1;
for (var i = n; i > 0; i--) {
result *= i;
}
return result;
}
第二种方法(递归):
int factorialRec(int n) {
if (n < 0) {
throw ArgumentError('The input number should be a non-negative integer.');
}
if (n == 0 || n == 1) return 1;
return n * factorial(n - 1);
}
int calculateFactorial(int n) {
if (n < 0) {
throw ArgumentError("Factorial is not defined for negative numbers");
}
if (n == 0 || n == 1) {
return 1;
}
int factorial = 1;
for (int i = 2; i <= n; i++) {
factorial *= i;
}
return factorial;
}
void main() {
int number = 5; // Change this to any number for which you want to calculate the factorial.
try {
int result = calculateFactorial(number);
print("Factorial of $number is $result");
} catch (e) {
print(e);
}
}
5条答案
按热度按时间dphi5xsq1#
第一种方法(迭代):
第二种方法(递归):
dm7nw8vv2#
这里的方法:
下面是完整的app代码:
希望这能回答你的问题。
drkbr07n3#
您可以使用递归概念找到方法的阶乘,这有助于您编写最少的代码
ogq8wdun4#
使用最近发布的模式匹配:
wz3gfoph5#
这是你的方法,根据它可能是你可能会得到的结果。