如何使用递增的数字递归进行整数阶乘计算?
How to do integer factorial compute by recursion using increasively number?
这里是阶乘递归的递减解法:
int fact(int n)
{
if (n == 0 || n == 1){
return 1;
} else {
return n * fact(n - 1);
}
}
如果我想通过增加而不是减少来进行阶乘递归:
int fact(int n, int i)
{
if (n == 0 || n == 1){
return 1;
} else {
if (i+1 <= n) {
return n * fact(n, i + 1);
}
return n;
}
}
当我调用 fact(5, 0)
时返回 15625
提前致谢
int fact(int n, int i)
{
if (n == 0 || n == 1){
return 1;
} else {
if (i+1 <= n) {
return n * fact(n, i + 1);
}
return n;
}
}
在上面的函数中,由于 return n * fact(n, i+1)
语句,您正在计算 n^{n}
而不是 n!
。
下面的递归函数(对 OP 发布的原始函数进行了最小的更改)如果我们将其称为 fact(n, 0)
将起作用
int fact(int n, int i)
{
if (n == 0 || n == 1){
return 1;
} else {
if (i+1 < n) {
return (i+1) * fact(n, i + 1);
}
return n;
}
}
这里是阶乘递归的递减解法:
int fact(int n)
{
if (n == 0 || n == 1){
return 1;
} else {
return n * fact(n - 1);
}
}
如果我想通过增加而不是减少来进行阶乘递归:
int fact(int n, int i)
{
if (n == 0 || n == 1){
return 1;
} else {
if (i+1 <= n) {
return n * fact(n, i + 1);
}
return n;
}
}
当我调用 fact(5, 0)
15625
提前致谢
int fact(int n, int i)
{
if (n == 0 || n == 1){
return 1;
} else {
if (i+1 <= n) {
return n * fact(n, i + 1);
}
return n;
}
}
在上面的函数中,由于 return n * fact(n, i+1)
语句,您正在计算 n^{n}
而不是 n!
。
下面的递归函数(对 OP 发布的原始函数进行了最小的更改)如果我们将其称为 fact(n, 0)
int fact(int n, int i)
{
if (n == 0 || n == 1){
return 1;
} else {
if (i+1 < n) {
return (i+1) * fact(n, i + 1);
}
return n;
}
}