递归和非递归分别实现求n的阶乘

/*
递归和非递归分别实现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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值