/*
递归和非递归分别实现n的阶乘
*/
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
//递归实现n的阶乘函数
int recursion_fac(int n){
if (n == 1){ //若n等于1
return 1; //返回值为1
}
return n*recursion_fac(n - 1); //返回递归调用结果
}
//非递归实现n的阶乘函数
int non_recursion_fac(int n){
int fac = 1; //变量fac初始化为1
while (n > 0){ //当n大于0
fac *= n; //fac保存已经累乘的结果
--n; //n减1(n向0靠拢)
}
return fac; //函数返回值为fac
}
//主函数
int main(){
int n; //变量n用以保存用户想要的值
int ret; //变量ret接收函数调用返回结果
printf("请输入n的值:\n"); //提示用户输入信息
scanf("%d", &n); //保存用户输入的信息
ret = recursion_fac(n); //保存递归实现n的阶乘函数的返回值
printf("%d\n", ret); //打印输出结果
ret = non_recursion_fac(n); //保存非递归实现n的阶乘函数的返回值
printf("%d\n", ret); //打印输出结果
system("pause");
return 0;
}