C语言入门——求n的阶乘

简介: C语言入门——求n的阶乘

C语言入门——求n的阶乘

关于求n的阶乘问题,我们先来看一个题,借助题来找到突破点。

Problem Description

给定一个整数n,求它的阶乘,0≤n≤12

Input

输入一个数n

Output

输出一个数,表示n的阶乘

Sample Input

5

Sample Output

120

既然是求阶乘的,那突破点就很明显,

突破点就在阶乘

阶乘的概念及背景

概念:

一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!。

背景:

1808年,基斯顿·卡曼(Christian Kramp,1760~1826)引进这个表示法。

阶乘的计算方法:

大于等于1

任何大于等于1 的自然数n 阶乘表示方法:

n!=1×2×3×…×(n-1)×n

n!=n×(n-1)!

0的阶乘

0!=1。

在了解这些之后,可以开始先尝试用代码进行实现一下,然后再看下面代码做一次检查。

关于C语言实现n的阶乘,目前入门阶段,我们主要有两种写法:

第一种:循环

①for循环

#include<stdio.h>
int main()
{
  int n;
  scanf("%d",&n);
  int fact = 1;
  int i;
  for(i=1;i<=n;i++) 
  {
    fact *= i;
  }
  printf("%d\n",fact);
  return 0;
 } 

②while循环

#include<stdio.h>
int main()
{
  int n;
  scanf("%d",&n);
  int fact = 1;
  int i=1;
  while( i<=n )
  {
    fact *= i;
    i++;
  }
  printf("%d\n",fact);
  return 0;
 } 
第二种:递归(函数调用自身)
#include <stdio.h>
int Fact(int n);
int main() //主函数
{
    int n,cnt;                 
    scanf("%d",&n);
    cnt=Fact(n);
    printf("%d\n",cnt);
    return 0;
}
int Fact(int n)    //递归函数 
{
    int res=n;
    if(n>1)
        res=res*Fact(n-1);
    return res;
}

当然也可以写成这样:

#include <stdio.h>
int Fact(int n) //递归函数 
{
    int res=n;
    if(n>1)
        res=res*Fact(n-1);
    return res;
}
int main() //主函数 
{
    int n,cnt;                 
    scanf("%d",&n);
    cnt=Fact(n);
    printf("%d\n",cnt);
    return 0;
}


关于求n的阶乘就先说到这里希望这篇文章能对你有所帮助!

作者:code_流苏

喜欢的话,点个赞吧!

欢迎评论交流,如有错误,还请指正!


目录
相关文章
|
1月前
|
C语言
C语言------程设设计入门
这篇文章是C语言程序设计的入门教程,涵盖了C程序的实现过程、VC集成开发环境的使用、基本数据类型的使用、格式控制字符的作用,以及通过示例代码演示了如何使用printf()函数输出不同类型的数据。
C语言------程设设计入门
|
1月前
|
NoSQL Java 编译器
C语言从入门到精通该怎样学?
持续学习与实践:编程是一门需要不断学习和实践的技能,要保持对新技术和新知识的敏感性,并持续进行编程实践。
34 1
|
2月前
|
存储 Java C语言
【C语言入门】初识C语言:掌握编程的基石
【C语言入门】初识C语言:掌握编程的基石
47 4
【C语言入门】初识C语言:掌握编程的基石
|
2月前
|
存储 Java 程序员
【C语言入门】C语言入门:探索编程世界的基础概念
【C语言入门】C语言入门:探索编程世界的基础概念
63 2
|
2月前
|
前端开发 C语言 C++
C语言入门02---环境搭建
C语言入门02---环境搭建
|
2月前
|
编译器 C语言 C++
C++从遗忘到入门问题之C++持从C语言的过渡问题如何解决
C++从遗忘到入门问题之C++持从C语言的过渡问题如何解决
|
3月前
|
存储 Web App开发 算法
c语言的简单入门
熟悉c语言(简单入门)
|
3月前
|
JavaScript C语言
|
3月前
|
存储 人工智能 Java
|
3月前
|
存储 程序员 Go