递归算法求得10! = 3628800 循环算法求得10! = 3628800 #include <stdio.h> float fac_recursion(int n) { /********** Begin **********/ /********** End **********/ } float fac_loop(int n) { /********** Begin **********/ /********** End **********/ }补全代码
时间: 2023-06-29 07:05:56 浏览: 210
递归算法代码:
```
float fac_recursion(int n) {
if (n == 0) {
return 1;
} else {
return n * fac_recursion(n-1);
}
}
```
循环算法代码:
```
float fac_loop(int n) {
float result = 1;
for (int i = 1; i <= n; i++) {
result *= i;
}
return result;
}
```
相关问题
为我注释下面的代码#include <stdio.h> float fac_recursion(int n) { /********** Begin **********/ if(n==1) return 1; else return n*fac_recursion(n-1); /********** End **********/ } int S=1; float fac_loop(int n) { /********** Begin **********/ for(int i=n;i>=1;i--){ S*=i; } return S; /********** End **********/ } void main() { int n; float y; scanf("%d",&n); y=fac_recursion(n); printf("递归算法求得%d! = %.0f \n",n,y); y=fac_loop(n); printf("循环算法求得%d! = %.0f \n",n,y); }
这段代码主要实现了一个计算阶乘的程序,包括使用递归和循环两种方式。
具体注释如下:
```c
#include <stdio.h>
// 递归计算阶乘
float fac_recursion(int n) {
if(n==1) // 如果 n=1,则直接返回 1
return 1;
else // 否则递归调用自身,继续计算 n-1 的阶乘
return n * fac_recursion(n-1);
}
// 循环计算阶乘
int S=1; // 定义一个全局变量 S,用于存储计算结果
float fac_loop(int n) {
for(int i=n;i>=1;i--){ // 从 n 开始往下循环,直到 1
S *= i; // 累乘每一个数
}
return S; // 返回计算结果
}
// 主函数
void main() {
int n;
float y;
scanf("%d",&n); // 输入需要计算阶乘的数
y=fac_recursion(n); // 调用递归函数计算阶乘
printf("递归算法求得%d! = %.0f \n",n,y); // 输出结果
y=fac_loop(n); // 调用循环函数计算阶乘
printf("循环算法求得%d! = %.0f \n",n,y); // 输出结果
}
```
阅读全文