中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

c語言如何計算n的階乘

發布時間:2023-01-04 16:35:34 來源:億速云 閱讀:276 作者:iii 欄目:編程語言

本篇內容主要講解“c語言如何計算n的階乘”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“c語言如何計算n的階乘”吧!

c語言計算n的階乘的方法:1、通過for循環計算階乘,代碼如“for (i = 1; i <= n; i++){fact *= i;}”;2、通過while循環計算階乘,代碼如“while (i <= fact="" int="" res="n;if" n=""> 1)res...”。

一、問題

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的階乘”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

河北区| 玛曲县| 泽库县| 瓮安县| 凤山市| 方正县| 会同县| 铁岭县| 大洼县| 蒙自县| 封丘县| 天等县| 方正县| 合川市| 荥阳市| 廊坊市| 祁阳县| 行唐县| 菏泽市| 容城县| 海盐县| 大厂| 石家庄市| 民权县| 乐昌市| 斗六市| 涞源县| 梅河口市| 武陟县| 秦安县| 天水市| 柘荣县| 尤溪县| 会同县| 三明市| 阿鲁科尔沁旗| 新安县| 武夷山市| 天镇县| 通江县| 凭祥市|