首頁  >  文章  >  後端開發  >  c語言怎麼計算n的階乘

c語言怎麼計算n的階乘

藏色散人
藏色散人原創
2023-01-04 15:18:5922837瀏覽

c語言計算n的階乘的方法:1、透過for迴圈計算階乘,程式碼如「for (i = 1; i <= n; i ){fact *= i;}」;2 、透過while循環計算階乘,代碼如「while (i <= fact="" int="" res="n;if" n=""> 1)res...」。

c語言怎麼計算n的階乘

本教學操作環境:windows7系統、c99版本、Dell G3電腦。

c語言怎麼計算n的階乘?

#C語言求n的階乘:

關於求n的階乘問題,我們先來看一個題,借助題目來找出突破點。

一、問題

Problem Description

給定一個整數n,求它的階乘,0≤n≤ 12

Input

輸入一個數n

#Output

輸出一個數,表示n的階乘

Sample Input

5

#Sample Output

120

#二、分析

既然是求階乘的,那突破點就很明顯,

突破點就在階乘

階乘的概念及背景

1️⃣概念:

一個正整數的階乘(factorial )是所有小於且等於該數的正整數的積,並且0的階乘為1。自然數n的階乘寫作n!。

2️⃣背景:

1808年,基斯頓‧卡曼(Christian Kramp,1760~1826)引進這個表示法。

3️⃣階乘的計算方法:

#任何大於等於1 的自然數n 階乘表示法:

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

注意:0的階乘為1,即0! =1。
1! = 1
2! = 2 * 1 = 2
3! = 3 * 2 * 1 = 6

n! = n * (n-1) *… * 2 * 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;}

測試範例:5

1 * 2 * 3 * 4 * 5 = 120

5120--------------------------------Process exited after 1.475 seconds with return value 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;}

測試範例:6

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

6720--------------------------------Process exited after 1.549 seconds with return value 0请按任意键继续. . .
第二種:遞歸(函數呼叫自身)

#1️⃣寫法一

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

測試範例:7

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

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

當然也可以寫成這樣:

2️⃣寫法二

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

測試範例:6

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

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

#【相關推薦:C語言影片教學

以上是c語言怎麼計算n的階乘的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn