c语言判断输入整数是否为阶乘和数_C语言 | 递归求n的阶乘

“要成为绝世高手,并非一朝一夕,除非是天生武学奇才,但是这种人…万中无一”

——包租婆 这道理放在C语言学习上也一并受用。在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从C语言小白进阶到高手,需要经历的是日积月累的学习。 那么如何学习呢? 当然是每天都练习一道C语言题目!!

c语言判断输入整数是否为阶乘和数_C语言 | 递归求n的阶乘_第1张图片

作者

闫小林

白天搬砖,晚上做梦。我有故事,你有酒么?

例30:C语言求n!,要求用递归实现。

解题思路:本题和例29思想差不多,都是用递归来实现,读者可以回顾一下《C语言 | 递归求年龄》

求阶乘函数:

int factorial(int number)//自定义阶乘函数
{
  int temp;//定义整型变量 if(number<0)//如果这个数小于0
  {
    printf("错误数据请,输入大于0的数!");//不符合条件,无法求
  }else if(number==0||number==1)//0或者1本身的阶乘是1
  {
    temp=1;
  }else
  {
    temp=factorial(number-1)*number;//否则求这个数与前一个数相乘的结果
  } return temp;//将temp返回到函数调用处
}

源代码演示:
#include//头文件 int main()//主函数 {
      int factorial(int number);//自定义阶乘函数声明 int number,temp;//定义变量 printf("输入要求阶乘的数:");//提示语句 scanf("%d",&number);//键盘输入相求的数 
  temp=factorial(number);//调用阶乘函数 printf("%d!=%d",number,temp) ;//输出结果 return 0;//主函数返回值为0
} int factorial(int number)//自定义阶乘函数 { int temp;//定义整型变量 if(number<0)//如果这个数小于0
  { printf("错误数据请,输入大于0的数!");//不符合条件,无法求
  }else if(number==0||number==1)//0或者1本身的阶乘是1
  {
    temp=1;
  }else
  {
    temp=factorial(number-1)*number;//否则求这个数与前一个数相乘的结果
  } return temp;//将temp返回到函数调用处
}
编译运行结果如下:
输入要求阶乘的数:55!=120
--------------------------------
Process exited after 1.553 seconds with return value 0
请按任意键继续. . .
上述代码我定义的是int类型,因为这个数不可能无限大,如果特别大,会超过int的范围,如下:
输入要求阶乘的数:100100!=0
--------------------------------
Process exited after 1.575 seconds with return value 0
请按任意键继续. . .

留个问题给读者请思考,最大可以求几的阶乘,为什么?

以上,如果你看了觉得对你有所帮助,就给小林点个赞,分享给身边的人叭,这样小林也有更新下去的动力,跪谢各位父老乡亲啦~ C语言学习路线     C语言开发工具 C++学习路线     C#学习路线 长按关注

c语言判断输入整数是否为阶乘和数_C语言 | 递归求n的阶乘_第2张图片

学习C/C++不迷路 

你可能感兴趣的:(c语言判断输入整数是否为阶乘和数_C语言 | 递归求n的阶乘)