C语言练习之求n的阶乘

目录

前言

一、原理及思路

原理:

思路:

二、源代码以及运行截图

非递归:

递归:

总结


a03ca859f4b74d958f838a5710c709b0.gif

前言

运用最近学习的C语言知识,使用递归和非递归两种方法分别实现求n的阶乘(不考虑溢出的问题)

一、原理及思路

原理:

求n的阶乘

n! = n*(n-1)*(n-2)*(n-3)······2*1

特殊的,当n = 0时,n! = 1。

思路:

由原理我们可以得到一个公式:

gif.latex?f%28n%29%3D%5Cleft%5C%7B%5Cbegin%7Bmatrix%7D%201%20%26%20n%3D0%2C1%20%26%20%5C%5C%20n*f%28n-1%29%26%20n%3D2%2C3%2C4%2C...%26%20%5Cend%7Bmatrix%7D%5Cright.

以5!为例,它的递推过程如下

f(5) -->5*f(4)

               f(4)-->4*f(3)

                            f(3)-->3*f(2)

                                          f(2)-->2*f(1)

                                                        f(1)=1

将f(1)的值回代到上一步,以此回推,最终就能得到原式的结果。

二、源代码以及运行截图

为了方便大家的交流和学习,我将程序源代码和运行截图放置在下方。

非递归:

源代码:

#include<stdio.h>
int main()
{
	int n = 1;
	int m = 1;
	int input = 0;
	printf("请输入要计算阶乘的数:>");
	scanf("%d", &input);
	if (input < 0)
	{
		printf("输入错误!\n");
	}
	else if (input != 0)
	{
		for (n = 1; n <= input; n++)
		{
			m *= n;
		}
	}
	printf("这个数的阶乘为%d\n", m);
	return 0;
}

运行截图:

33117fe4ae304d18b081751d95575cf1.png

递归:

源代码:

#include<stdio.h>
int Fct(int input)
{
	if (input < 0)
	{
		printf("输入错误!\n");
		return -1;
	}
	else if (input == 0)
	{
		return 1;
	}
	else
	{
		return input*Fct(input - 1);
	}
}
int main()
{
	int input = 0;
	printf("请输入要计算阶乘的数:>");
	scanf("%d", &input);
	printf("这个数的阶乘为%d\n", Fct(input));
	return 0;
}

运行截图:

5927632a3af04405924ff825badb4cc6.png

 


总结

以上就是今天要讲的内容,本文简单的介绍了用C语言中的循环和递归两种思路实现n的阶乘的求解,还进一步展示了代码的运行结果验证了作者的思路。

本文的作者也只是一个正在学习C语言等编程知识的萌新,若这篇文章中有哪些不正确的内容,请在评论区向作者指出(也可以私信作者),欢迎大佬们指点,也欢迎其他正在学习C语言的萌新和作者进行交流。

最后,如果本篇文章对你有所启发的话,也希望可以支持支持作者,后续作者也会定期更新学习记录。谢谢大家!

31999de7454f43098db0bfd9b6889de5.gif

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

codeJinger

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值