int mul(int n) {
if (n)
return n * mul(n - 1);
else
return 1;
}
int main() {
int n = 0;
scanf("%d", &n);
int ret = mul(n);
printf("%d", ret);
return 0;
}
这个递归函数mul
用于计算一个整数n
的阶乘,也就是从1
乘到n
的结果。我们来详细分析一下:
-
函数定义:
mul
是一个接受一个整数参数n
并返回一个整数的函数。 -
递归条件:在函数内部,首先检查
n
是否为非零值。如果n
不为零,函数将进行递归调用,计算n-1
的阶乘,并将结果与n
相乘。这就是函数return n * mul(n - 1);
所做的事情。 -
递归基础:如果
n
为零,函数返回1
。这是递归的基础情况,因为0
的阶乘定义为1
。 -
递归过程:每次递归调用
mul
函数时,它都会减少n
的值,直到n
为零。然后递归开始返回,并在返回过程中连续将数字相乘。
例如,如果n
为4
,递归调用将如下展开:
mul(4)
将计算4 * mul(3)
mul(3)
将计算3 * mul(2)
mul(2)
将计算2 * mul(1)
mul(1)
将计算1 * mul(0)
mul(0)
将返回1
然后,递归开始返回并计算最终结果:
mul(1)
返回1 * 1 = 1
mul(2)
返回2 * 1 = 2
mul(3)
返回3 * 2 = 6
mul(4)
返回4 * 6 = 24
最终,mul(4)
将返回24
。
在main
函数中:
-
声明了一个整数变量
n
。 -
使用
scanf
函数从用户那里读取一个整数,并存储在变量n
中。 -
调用
mul
函数,并将返回值存储在变量ret
中。 -
使用
printf
函数打印变量ret
的值。 -
最后,
main
函数返回0
,表示程序正常结束。
所以,这个程序的目的是读取用户输入的一个整数n
,计算它的阶乘,并打印出结果。