目录
一、问题描述
使用递归和非递归方式分别实现求n的阶乘。
二、解决思路
1.非递归方式:用循环控制变量变化,用result变量存储乘数结果。
2.递归方式:不断调用自身从而实现。
三、代码实现
1. 非递归方式
int fact2(int n)
{
int result = 1;
for (int i = 1; i <= n; i++) {
result = result * i;
}
return result;
}
2. 递归方式
int fact1(int n)
{
if (n <= 1)
return 1;
return n * fact1(n - 1);
}
最终的代码实现:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int fact1(int n);
int fact2(int n);
int main()
{
int n;
printf("请输入一个数:");
scanf("%d", &n);
printf("%d的阶乘是%d(递归方式)\n", n, fact1(n));
printf("%d的阶乘是%d(非递归方式)", n, fact2(n));
return 0;
}
int fact1(int n)
{
if (n <= 1)
return 1;
return n * fact1(n - 1);
}
int fact2(int n)
{
int result = 1;
for (int i = 1; i <= n; i++) {
result = result * i;
}
return result;
}