如何使用C語言求N的階乘
使用C語言求N的階乘的方法是很多小夥伴都想知道的,下面小編給大家介紹如何使用C語言求N的階乘,歡迎閲讀!
如何使用C語言求N的階乘用遞歸法求N的.階乘
程序調用自身稱為遞歸( recursion).它通常把一個大型複雜的問題層層轉化為一個與原問題相似的規模較小的問題來求解.
遞歸的能力在於用有限的語句來定義對象的無限集合。
一般來説,遞歸需要有邊界條件、遞歸前進段和遞歸返回段。當邊界條件不滿足時,遞歸前進;當邊界條件滿足時,遞歸返回。
12345678910111213141516171819202122232425262728293031323334353637383940414243 | #include <stdio.h> #include <string.h> #include <stdlib.h> long factorial( int n) {
if (n == 1) return 1;
else return n*factorial(n-1); } int main( int argc, char *argv[]) {
int n = 0;
if (argc != 2)
{ printf ( "input error,exit!!" ); return -1;
}
n = atoi (argv[1]);
printf ( "%d! = %ld" ,n,factorial(n));
return 0; } |
習題示例
題目
題目描述:
輸入一個正整數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
//存儲每次階乘運算的結果 int str[MAX];
void calculateFactorial( int n);
int main() {
int n;
while ( scanf ( "%d" , &n) != EOF) { if (n == 0) { printf ( "1" ); } else { calculateFactorial(n); }
}
return 0; }
void calculateFactorial( int n) {
int i, 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
-
C語言合併排序及實例代碼
歸併排序也稱合併排序,其算法思想是將待排序序列分為兩部分,依次對分得的兩個部分再次使用歸併排序,之後再對其進行合併。下面是小編分享的C語言合併排序及實例代碼,一起來看一下吧。合併排序僅從算法思想上了解歸併排序會覺得很抽象,接下來就以對序列A[0],A[l]…,A...
-
C語言學習攻略
導語:C語言作為最流行的程序設計語言,是任何一個計算機專業及其愛好者們都必須掌握的一門編程語言。下面就由小編為大家介紹一下C語言學習攻略,歡迎大家閲讀!一、C語言學習中存在的問題(一)基礎薄弱,無法適應C語言學習的課程通常安排在大一,這個時候,學生們剛剛進入...
-
C語言指針的長度和類型講解
對於初學者深入理解C語言程序設計有很好的參考價值,下面是小編為大家整理的C語言指針的長度和類型講解,歡迎參考~一般來説,如果考慮應用程序的兼容性和可移植性,指針的長度就是一個問題,在大部分現代平台上,數據指針的長度通常是一樣的,與指針類型無關,儘管C標準沒有規...
-
如何使用C語言求N的階乘
使用C語言求N的階乘的方法是很多小夥伴都想知道的,下面小編給大家介紹如何使用C語言求N的階乘,歡迎閲讀!如何使用C語言求N的階乘用遞歸法求N的.階乘程序調用自身稱為遞歸(recursion).它通常把一個大型複雜的問題層層轉化為一個與原問題相似的規模較小的問題來求...