C语言初阶习题(3函数)【17】求N的阶乘( 递归和非递归实现)

1.题目

2.分析

  1. 非递归
    需要用到循环,n个数就是循环n次,每次和之前的乘起来
    例如 5的阶乘 就是 5*4 *3 *2 *1
    循环1到5 。需要一个变量来接收每次的结果 注意这个地方是乘,所以要从1 开始,sum 也需要是1而不是0

for(i = 1; i<=5; i++)
{
sum =sum * i // 等价于 sum * =i;
}

  1. 递归
    分两种情况,就是小于2 就是本身
    大于2 的时候开始是 n*(n-1)的情况了

3. 代码实现

#include<stdio.h>
//求n!
int numMuti(int n)
{
	int i = 0;
	int sum = 1;
	for (i = 1; i <= n; i++)
	{
		sum *= i;
	}
	return sum;
}

int numMuti2(int m)
{
	if (m > 2)
	{
		return m * numMuti2(m - 1);
	}
	else
		return m;
}

int main()
{
	int num = 0;
	scanf("%d", &num);
	int ret1 =numMuti(num);
	int ret = numMuti2(num);
	printf("%d\n", ret);

		return 0;
}


在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值