C语言开发之求n的阶乘

来源:爱站网时间:2020-11-28编辑:网友分享
对于C/C++初学者来说,他们经常会遇到阶乘计算等问题,然而对于阶乘的计算,普通人可以很容易地掌握使用定义和循环来求解,下面就跟着爱站技术频道小编一起来了解C语言开发之求n的阶乘吧!

对于C/C++初学者来说,他们经常会遇到阶乘计算等问题,然而对于阶乘的计算,普通人可以很容易地掌握使用定义和循环来求解,下面就跟着爱站技术频道小编一起来了解C语言开发之求n的阶乘吧!

用递归法求N的阶乘

程序调用自身称为递归( recursion).它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解.

递归的能力在于用有限的语句来定义对象的无限集合。

一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。

#include 

#include 

#include 

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;

}

习题示例

题目

    题目描述: 
     输入一个正整数N,输出N的阶乘。 
    输入: 
    正整数N(0     输出: 
     输入可能包括多组数据,对于每一组输入数据,输出N的阶乘 
    样例输入: 
    4 
    5 
    15 
    样例输出: 
    24 
    120 
    1307674368000 

 

AC代码

  #include  
  #include  
  #include  
    
  #define MAX 3000 
    
  //存储每次阶乘运算的结果 
  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  0) 
      { 
        str[j ++] = c % 10; 
        c /= 10; 
      } 
      len = j - 1; 
    } 
    
    for (i = len; i >= 1; i --) { 
      printf("%d", str[i]); 
    } 
    printf("\n"); 
  } 

  以上就是爱站技术频道小编介绍的C语言开发之求n的阶乘,希望这些介绍能帮助到大家,想知道更多的编程知识,请继续关注js.aizhan.com哦。

上一篇:C语言中二进制转换的描述

下一篇:C语言开发中内存分配的具体操作

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载