c語言計算n的階乘的方法:1、通過for迴圈計算階乘,程式碼如「for (i = 1; i <= n; i++){fact *= i;}」;2、通過while迴圈計算階乘,程式碼如「while (i <= fact="" int="" res="n;if" n=""> 1)res...」。
本教學操作環境:windows7系統、c99版本、Dell G3電腦。
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語言怎麼計算n的階乘的詳細內容,更多請關注TW511.COM其它相關文章!