Comment calculer la factorielle de n en langage C

藏色散人
Libérer: 2023-01-04 15:19:32
original
22856 Les gens l'ont consulté

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;}
Copier après la connexion
Exemple de test : 5

1 * 2 * 3 * 4 * 5 = 120

5120--------------------------------Process exited after 1.475 seconds with return value 0请按任意键继续. . .
Copier après la connexion

②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;}
Copier après la connexion
Exemple de test : 6

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

6720--------------------------------Process exited after 1.549 seconds with return value 0请按任意键继续. . .
Copier après la connexion
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;}
Copier après la connexion
1️⃣写法一
75040--------------------------------Process exited after 2.563 seconds with return value 0请按任意键继续. . .
Copier après la connexion

测试样例: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;}
Copier après la connexion

当然也可以写成这样:

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请按任意键继续. . .
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal