问题:递归和非递归分别实现求n的阶乘
思路:使用递归之前,我们知道递推公式为n!=n*(n-1)*(n-2)…1
递归实现代码:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int Func(int n) {
if (n == 1) {
return 1;
}
return n*Func(n - 1);
}
int main() {
int n;
printf("请输入n:\n");
scanf("%d", &n);
printf("%d的阶乘为%d\n",n,Func(n));
system("pause");
return 0;
}
非递归实现代码(采用for循环):
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int Func(int n) {
int result = 1;
for (int i = 1; i <= n; ++i) {
result *= i;
}
return result;
}
int main() {
int n;
printf("请输入n:\n");
scanf("%d", &n);
printf("%d的阶乘为%d\n",n,Func(n));
system("pause");
return 0;
}
运行结果: