欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用C語言求N的階乘的方法

 更新時間:2015年08月16日 11:52:13   作者:低調(diào)小一  
這篇文章主要介紹了使用C語言求N的階乘的方法,包括一道相關(guān)的ACM題目示例,需要的朋友可以參考下

用遞歸法求N的階乘

程序調(diào)用自身稱為遞歸( recursion).它通常把一個大型復(fù)雜的問題層層轉(zhuǎn)化為一個與原問題相似的規(guī)模較小的問題來求解.

遞歸的能力在于用有限的語句來定義對象的無限集合。

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

#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!!\n");

    return -1;

  }

  n = atoi(argv[1]);

  printf("%d! = %ld\n",n,factorial(n));

  return 0;

}

習(xí)題示例

題目

    題目描述: 
     輸入一個正整數(shù)N,輸出N的階乘。 
    輸入: 
    正整數(shù)N(0<=N<=1000) 
    輸出: 
     輸入可能包括多組數(shù)據(jù),對于每一組輸入數(shù)據(jù),輸出N的階乘 
    樣例輸入: 
    4 
    5 
    15 
    樣例輸出: 
    24 
    120 
    1307674368000 

AC代碼

  #include <stdio.h> 
  #include <stdlib.h> 
  #include <string.h> 
    
  #define MAX 3000 
    
  //存儲每次階乘運算的結(jié)果 
  int str[MAX]; 
    
  void calculateFactorial(int n); 
    
  int main() 
  { 
    int n; 
    
    while (scanf("%d", &n) != EOF) { 
      if(n == 0) { 
        printf("1\n"); 
      } 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 ++) { //循環(huán)與2,3,..n相乘 
      for (j = 1, c = 0; j <= len; j ++) { //str數(shù)組代表一個數(shù),模擬與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("\n"); 
  } 

    /**************************************************************
        Problem: 1076
        User: wangzhengyi
        Language: C
        Result: Accepted
        Time:2150 ms
        Memory:916 kb
    ****************************************************************/

相關(guān)文章

  • 手把手教你實現(xiàn)一個C++單鏈表

    手把手教你實現(xiàn)一個C++單鏈表

    鏈表是一種數(shù)據(jù)結(jié)構(gòu),用于數(shù)據(jù)的存儲。這篇文章主要為大家介紹了如何實現(xiàn)一個C++單鏈表,文中的示例代碼講解詳細,感興趣的小伙伴可以嘗試一下
    2022-11-11
  • C++詳細分析講解引用的概念與使用

    C++詳細分析講解引用的概念與使用

    引用(reference)就是C++對C語言的重要擴充。引用就是某一變量(目標)的一個別名,對引用的操作與對變量直接操作完全一樣
    2022-05-05
  • C++中main函數(shù)怎樣調(diào)用類內(nèi)函數(shù)

    C++中main函數(shù)怎樣調(diào)用類內(nèi)函數(shù)

    這篇文章主要介紹了C++中main函數(shù)怎樣調(diào)用類內(nèi)函數(shù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • C語言中的鏈接編寫教程

    C語言中的鏈接編寫教程

    這篇文章主要介紹了C語言中的鏈接編寫教程,是C語言入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-08-08
  • c++實現(xiàn)簡單隨機數(shù)的代碼

    c++實現(xiàn)簡單隨機數(shù)的代碼

    在本篇文章里小編給大家整理的是一篇關(guān)于c++實現(xiàn)簡單隨機數(shù)的代碼內(nèi)容,有需要的朋友們可以跟著學(xué)習(xí)下。
    2021-05-05
  • C++編譯器Clion的使用詳解(總結(jié))

    C++編譯器Clion的使用詳解(總結(jié))

    Clion有一個比較讓人郁悶的地方就是必須要把編譯環(huán)境配置好了,IDE才去做代碼分析等動作,但是還是有很多優(yōu)點,本文重點給大家介紹C++編譯器Clion的使用,感興趣的朋友跟隨小編一起看看吧
    2021-05-05
  • C++計算任意兩個日期天數(shù)差的方法詳解

    C++計算任意兩個日期天數(shù)差的方法詳解

    這篇文章主要為大家詳細介紹了如何利用C++實現(xiàn)任意兩個日期天數(shù)差,文中的示例代碼講解詳細,具有一定的借鑒價值,有需要的小伙伴可以參考一下
    2024-02-02
  • C語言清除scanf()緩存的案例講解

    C語言清除scanf()緩存的案例講解

    今天小編就為大家分享一篇關(guān)于C語言清除scanf()緩存的案例講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • 淺析C/C++中動態(tài)鏈接庫的創(chuàng)建和調(diào)用

    淺析C/C++中動態(tài)鏈接庫的創(chuàng)建和調(diào)用

    下面小編就為大家?guī)硪黄獪\析C/C++中動態(tài)鏈接庫的創(chuàng)建和調(diào)用。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考,一起跟隨小編過來看看吧
    2016-05-05
  • C語言安全編碼之數(shù)值中的sizeof操作符

    C語言安全編碼之數(shù)值中的sizeof操作符

    這篇文章主要介紹了C語言安全編碼的數(shù)值中的sizeof操作符用法注意事項,需要的朋友可以參考下
    2014-07-07

最新評論