递归算法求得10! = 3628800 循环算法求得10! = 3628800 #include <stdio.h> float fac_recursion(int n) { /********** Begin **********/ /********** End **********/ } float fac_loop(int n) { /********** Begin **********/ /********** End **********/ }补全代码
时间: 2023-06-29 17:05:56 浏览: 63
递归算法代码:
```
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;
}
```
相关问题
Hanoi问题#include <stdio.h> #include <stdlib.h>
Hanoi问题是一个经典的递归问题,其目标是将一堆盘子从一个柱子移动到另一个柱子,每次只能移动一个盘子,并且大盘子不能放在小盘子上面。下面是一个C语言的Hanoi问题的递归实现:
```c
#include <stdio.h>
#include <stdlib.h>
void hanoi(int n, char A, char B, char C) {
if (n == 1) {
printf("Move disk 1 from %c to %c\n", A, C);
return;
}
hanoi(n-1, A, C, B);
printf("Move disk %d from %c to %c\n", n, A, C);
hanoi(n-1, B, A, C);
}
int main() {
int n;
printf("Enter the number of disks: ");
scanf("%d", &n);
hanoi(n, 'A', 'B', 'C');
return 0;
}
```
上述代码中,hanoi函数是递归函数,用于将n个盘子从A柱子移动到C柱子,B柱子作为辅助柱子。当n等于1时,直接将盘子从A柱子移动到C柱子。否则,先将n-1个盘子从A柱子移动到B柱子,再将第n个盘子从A柱子移动到C柱子,最后将n-1个盘子从B柱子移动到C柱子。在main函数中,首先输入盘子的数量n,然后调用hanoi函数。
9 、设计函数,利用递归实现n!(程序运行时,输入一个整数7) #include <stdio.h> #include <stdlib.h> int f1(int n) { int f; if(n==0||n==1) f=1; else f=n*f1(n-1); return f; } int main() { int n,j; scanf("%d",&n); j=f1(n); printf("%d!=%d\n",n,j); return 0; }
这是一个 C 语言程序,它利用递归实现了求 n 的阶乘。在这个程序中,我们定义了一个递归函数 f1,用来计算 n 的阶乘。如果 n 等于 0 或 1,则返回 1;否则,递归求解 n-1 的阶乘,然后将结果乘以 n,即可得到 n 的阶乘。最后,在 main 函数中读入一个整数 n,调用 f1 函数求出 n 的阶乘,然后输出结果。以下是这个程序的代码:
```c
#include <stdio.h>
#include <stdlib.h>
int f1(int n) {
int f;
if(n == 0 || n == 1)
f = 1;
else
f = n * f1(n - 1); // 递归求解 n 的阶乘
return f;
}
int main() {
int n, j;
scanf("%d", &n);
j = f1(n);
printf("%d!=%d\n", n, j);
return 0;
}
```
当输入 7 时,程序会输出:
```
7!=5040
```