利用静态局部变量编写函数求n的阶乘
时间: 2024-02-07 13:03:44 浏览: 37
以下是利用静态局部变量编写函数求n的阶乘的示例代码:
```c
int factorial(int n) {
static int result = 1; // 静态局部变量
if (n <= 1) {
int res = result;
result = 1; // 重置静态局部变量
return res;
}
result *= n;
return factorial(n - 1);
}
```
在函数内部,声明了一个静态局部变量 `result`,用于存储计算过程中的阶乘结果。在每次函数调用时,将输入的 `n` 与 `result` 相乘,更新 `result` 的值。当 `n` 小于等于 1 时,将 `result` 的值存储到一个局部变量 `res` 中,并将 `result` 重置为 1,以便下一次函数调用时重新计算阶乘。最后返回 `res` 的值,即为输入 `n` 的阶乘。
相关问题
C语言利用静态局部变量编写函数计算n的阶乘
以下是利用静态局部变量编写函数计算n的阶乘的C语言代码:
```c
#include <stdio.h>
int factorial(int n) {
static int result = 1;
if (n == 0) {
return result;
}
result *= n;
return factorial(n-1);
}
int main() {
int n = 5;
printf("Factorial of %d is %d\n", n, factorial(n));
return 0;
}
```
在这个函数中,我们使用了一个静态局部变量 `result` 来存储计算过程中的中间结果。静态局部变量只会在函数第一次被调用时被初始化,之后保留其值。这样,在每次函数被调用时,我们都可以使用已经计算好的中间结果,而不需要重新计算。
c语言利用静态局部变量编写函数计算n的阶乘
下面是一个用 C 语言编写的函数,可以使用静态局部变量计算 n 的阶乘:
```c
#include <stdio.h>
int factorial(int n) {
static int result = 1; // 静态局部变量
if (n > 1) {
result *= n;
factorial(n - 1); // 递归调用函数本身
}
return result;
}
int main() {
int n = 5;
printf("%d! = %d\n", n, factorial(n));
return 0;
}
```
在这个函数中,我们使用了一个静态局部变量 `result`,它的初始值为 1。每次递归调用 `factorial` 函数时,`result` 会乘以 `n` 的值。最后,当 `n` 的值为 1 时,函数返回 `result` 的值,即 `n` 的阶乘。
需要注意的是,在每次递归调用 `factorial` 函数时,`result` 的值都会被保留。这是因为它是一个静态局部变量,只会被初始化一次,而不会被销毁。这使得我们可以在递归调用过程中保留 `result` 的值,从而计算出 `n` 的阶乘。