/*
递归和非递归分别实现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;
}
本文介绍了一种使用C语言实现阶乘的方法,包括递归和非递归两种方式。递归方法通过函数自身调用实现,而非递归方法则采用循环结构。这两种方法均可用于计算任意正整数的阶乘。
762

被折叠的 条评论
为什么被折叠?



