【最全】阶乘算法!(python和C语言)

576 阅读2分钟

阶乘的计算

叁岁学编程:用最简单的大白话理解编程,欢迎大家关注,留言,提问,希望和大家一起提升!\

文章目录

阶乘定义:

 阶乘指从1乘以2乘以3乘以4一直乘到所要求的数。例如所要求的数是4,则阶乘式是1×2×3×4,得到的积是24。
 24就是4的阶乘。
设要求n的阶乘算式就是1*2*3*…*n的值
解析
阶乘的计算:
可以通过for循环一个一个的乘上去
可以创建函数再通过递乘的方式
可以创建函数用递归的方式计算
方法一:for循环计算
#阶乘计算
a =int( input('输入要计算的阶乘数:') )
b = 1
for i in range(1,a+1):
    b *= i
print('%d的阶乘的结果为%d'%(a,b))
#结果为:
输入要计算的阶乘数:5
5的结果为120 

解释:
a=输入的值(int()强制转换输入的字符串为整数)
设置b的初始值1(因为是乘法所有不能够为0)
设置for循环 从1开始到a结束(range()前闭后开所以要加一)
b的值叠乘
最后输出。

方法二:定义for循环的函数计算
def factrial(n):  #定义一个函数factial()
    result = n
    for i in range(1,n):
        result *= i
    return result

number = int(input("请输入要计算的值")) #输入一个值
result = factrial(number)
print('%d的阶乘的值为%d'%(number,result))

#结果
请输入要计算的值5
5的阶乘的值为120
方法三:定义递归函数计算
def factrial(n):  #定义函数
    if n <= 0:
        print("输出错误,请重新输入!")
    elif n == 1:
        return 1
    else:
         return  n * factrial(n-1)  #递归输出
number = int(input("请输入要计算的值"))
result = factrial(number)
print('%d的阶乘的值为%d'%(number,result))

#结果
请输入要计算的值5
5的阶乘的值为120
小知识:
阶乘还可以用!来表达  如:5的阶乘为 5!
5! =  120
C语言代码
方法一:for函数
#include <stdio.h>
int main()
{
    int i,n;
    double sum=1;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
        sum=sum*i;
    printf("%d!=%lf",n,sum);
    printf("\n");
    return 0;
}
方法二:递归函数
#include<stdio.h>
long fac(int n){  //定义fac函数 
	long f;
	printf("n=%d\t",n);  //输出当前n的值(大->小) 
	if(n<0){
		printf("\nn<0,数据错误!");  //判断是否小于0 
		f=0;   //赋值为0 
	}
	else if(n==0)f=1;  //最后停止的标志 
	else f=fac(n-1)*n;  //数据没问题调用自己继续执行 
	printf("\n 返回:n=%d\tf=%d",n,f); //当调用到n==0后 开始执行 
	return f;
} 
main(){
	int n;
	long y;
	printf("需要输出的轮数:");
	scanf("%d",&n);
	y=fac(n);  //调用fac函数 
	if(y!=0){  //y!=0就输出 
		printf("\n%d!=%ld\n",n,y);
	} 
}

在这里插入图片描述

总结:

阶乘的计算方法很多,种类很多,总体上不难,有问题欢迎大家留言提问,大家一起探讨!