當前位置:才華齋>計算機>C語言>

如何使用C語言求N的階乘

C語言 閱讀(3.27W)

使用C語言求N的階乘的方法是很多小夥伴都想知道的,下面小編給大家介紹如何使用C語言求N的階乘,歡迎閱讀!

如何使用C語言求N的階乘
  如何使用C語言求N的階乘

用遞迴法求N的.階乘

程式呼叫自身稱為遞迴( recursion).它通常把一個大型複雜的問題層層轉化為一個與原問題相似的規模較小的問題來求解.

遞迴的能力在於用有限的語句來定義物件的無限集合。

一般來說,遞迴需要有邊界條件、遞迴前進段和遞迴返回段。當邊界條件不滿足時,遞迴前進;當邊界條件滿足時,遞迴返回。

12345678910111213141516171819202122232425262728293031323334353637383940414243#include <stdio.h>#include <string.h>#include <stdlib.h>longfactorial(intn){if(n == 1) return1;else returnn*factorial(n-1);}intmain(intargc,char*argv[]){intn = 0;if(argc != 2){ printf("input error,exit!!"); return-1;}n =atoi(argv[1]);printf("%d! = %ld",n,factorial(n));return0;}

習題示例

題目

 題目描述:

輸入一個正整數N,輸出N的階乘。

輸入:

正整數N(0<=N<=1000)

輸出:

輸入可能包括多組資料,對於每一組輸入資料,輸出N的階乘

樣例輸入:

4

5

15

樣例輸出:

24

120

1307674368000

 AC程式碼

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX 3000//儲存每次階乘運算的結果intstr[MAX];voidcalculateFactorial(intn);intmain(){intn;while(scanf("%d", &n) != EOF) { if(n == 0) { printf("1"); }else{ calculateFactorial(n); }}return0;}voidcalculateFactorial(intn){inti, j, temp, c, len;memset(str, 0,sizeof(str));str[1] = 1;for(i = 2, len = 1; i <= n; i ++) {//迴圈與2,3,..n相乘 for(j = 1, c = 0; j <= len; j ++) {//str陣列代表一個數,模擬與i相乘 temp = str[j] * i + c; str[j] = temp % 10; c = temp / 10; } while(c > 0) { str[j ++] = c % 10; c /= 10; } len = j - 1;}for(i = len; i >= 1; i --) { printf("%d", str[i]);}printf("");}

/**************************************************************

Problem: 1076

User: wangzhengyi

Language: C

Result: Accepted

Time:2150 ms

Memory:916 kb