1) res..."."/> 1) res...".">

Maison  >  Article  >  développement back-end  >  Comment calculer la factorielle de n en langage C

Comment calculer la factorielle de n en langage C

藏色散人
藏色散人original
2023-01-04 15:18:5922804parcourir

Comment calculer la factorielle de n en langage C : 1. Calculez la factorielle via une boucle for, un code tel que "for (i = 1; i <= n; i++){fact *= i;}" ; 2. Via une boucle while Pour calculer factorielle, le code est comme "while (i <= fact="" int="" res="n;if" n=""> 1)res...".

Comment calculer la factorielle de n en langage C

L'environnement d'exploitation de ce tutoriel : système Windows 7, version c99, ordinateur Dell G3.

Comment calculer la factorielle de n en langage C ?

Langage C pour trouver la factorielle de n :

Concernant le problème de trouver la factorielle de n, regardons d'abord une question et utilisons la question pour trouver le point de rupture.

1. Problème

Description du problème

Étant donné un entier n, trouvez sa factorielle, 0≤n≤12

Entrée

Entrez un nombre n

Sortie

sortie Un numéro représentant la factorielle de n

Sample Input

5

Sample Output

120

2. Analyse

Puisque nous recherchons des factorielles, le point de rupture est évident,

La percée Le point est  : Factorial

Concept et contexte de la factorielle :

1️⃣Concept :

La factorielle d'un entier positif est le produit de tous les entiers positifs inférieurs et égaux à ce nombre, et la factorielle de 0 vaut 1. La factorielle d’un nombre naturel n s’écrit n!.

2️⃣Contexte :

En 1808, Christian Kramp (1760~1826) introduit cette notation.

3️⃣Méthode de calcul de factorielle :

Tout nombre naturel n supérieur ou égal à 1 Méthode d'expression factorielle :

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

Remarque : La factorielle de 0 est 1, ce qui correspond à 0 ! =1.

1 = 1
2 ! = 2 * 1 = 2
3 = 3 * 2 * 1 = 6

n = n * (n-1) *… * 2 * 1

Après avoir compris cela, vous pouvez commencer par essayer de l'implémenter avec du code, puis vérifier le code ci-dessous.

3. Résolution

Concernant la factorielle de n implémentée en langage C, au stade introductif actuel, nous avons principalement les deux façons d'écrire suivantes :

La première : boucle

①boucle 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;}
Exemple de test : 5

1 * 2 * 3 * 4 * 5 = 120

5120--------------------------------Process exited after 1.475 seconds with return value 0请按任意键继续. . .

②while loop

#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;}
Exemple de test : 6

1 * 2 * 3 * 4 * 5 * 6 = 720

6720--------------------------------Process exited after 1.549 seconds with return value 0请按任意键继续. . .
Le deuxième type : récursion (la fonction s'appelle elle-même)
1️⃣Première méthode d'écriture

#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;}
1️⃣写法一
75040--------------------------------Process exited after 2.563 seconds with return value 0请按任意键继续. . .

测试样例:7

7 * 6 * 5 * 4 * 3 * 2 * 1
= 1 * 2 * 3 * 4 * 5 * 6 * 7
= 5040

#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;}

当然也可以写成这样:

2️⃣写法二Échantillon de test : 7

7 * 6 * 5 * 4 * 3 * 2 * 1

= 1 * 2 * 3 * 4 * 5 * 6 * 7

= 5040

6720--------------------------------Process exited after 1.829 seconds with return value 0请按任意键继续. . .

Bien sûr, cela peut aussi s'écrire comme ceci :

2️⃣Méthode d'écriture deuxrrreeeExemple de test : 6

6 * 5 * 4 * 3 * 2 * 1🎜 = 1 * 2 * 3 * 4 * 5 * 6🎜 = 720🎜rrreee🎜[Recommandations associées : 🎜Tutoriel vidéo en langage C🎜]🎜🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn