用C语言编写并调试一个求n!(n为整数)的递归函数,希望能在程序运行过程中动态地显示递归函数被调用的轨迹。 (1)注意递归结束条件和递推公式。 (2)动态地显示递归函数被调用的轨迹,即每次要打印出变量的变化情况。
时间: 2024-12-25 19:37:35 浏览: 5
在C语言中,我们可以创建一个递归函数来计算阶乘,并在程序运行过程中使用`printf()`函数动态显示递归过程。这里是一个简单的示例:
```c
#include <stdio.h>
// 定义阶乘函数,注意递归结束条件是当n=0时返回1
long long factorial(int n) {
// 递归结束条件:当n等于0时,阶乘为1
if (n == 0)
return 1;
// 动态打印当前n值和结果
printf("Factorial of %d is being computed as %lld\n", n, n);
// 递推公式:n! = n * (n-1)!
return n * factorial(n - 1);
}
int main() {
int n;
printf("Enter a non-negative integer: ");
scanf("%d", &n);
// 调用函数并开始递归
long long result = factorial(n);
printf("\nFactorial of %d is: %lld\n", n, result);
return 0;
}
```
在这个代码里,我们首先定义了一个名为`factorial`的递归函数,它接收一个整数`n`作为参数。在函数内部,我们首先检查是否达到递归终止条件(`n == 0`),然后打印出当前的`n`值和计算中的结果。接着,按照递推公式计算阶乘,并继续调用自身处理更小的`n`值。
在`main`函数中,我们从用户那里获取一个整数,然后调用`factorial`函数,最后打印出最终的结果。
阅读全文