函数\递归函数求阶乘

简介: 函数\递归函数求阶乘

好像有什么不太着调的东西混进去了QAQ

#include<stdio.h>
#include<stdlib.h>
 
//声明阶乘函数
double Fact(int n);
 
int main()
{
  int n;
  double t;
  printf("请输入一个数:");
  scanf("%d",&n);
  if (n<0)
    n=-n;
  t=Fact(n);
  printf("%d!=%.0lf\n",n,t);  //.0补位,省的整数的阶乘里一堆小数点
 
  system("pause");
  return 0;
}
 
//定义阶乘函数
double Fact(int n)
{
  if(!n)    //因为f(0)最后的结果是1,此时终止循环
    return 1.0;   //因为是double
  return(n*Fact(n-1));  //通过迭代的方式转到下一个函数里,实现阶乘
}             //算完一层降一层阶

如果学习过静态局部变量,还可以这样写

#include<stdio.h>
#include<stdlib.h>
//这里是利用静态函数的性质进行运算
 
//函数声明
double fun(int n);
 
int main()
{
  //输入指定阶乘数
  int i,n;
  printf("请输入:");
  scanf("%d",&n);
  while(n<=0 || n>130)
  {
    if(i<=0)
      printf("我不会负数求阶乘");
    else
      printf("数字太大了,不会做[对,就是摆烂]");
    printf("请再次输入:");
    scanf("%d",&n);
  }
 
  //开始迭代
  for(i=1;i<=n;i++)
    printf("%d!=%.0lf\n",i,fun(i));
  
  system("pause");
  return 0;
}
 
//函数定义
double fun(int n)
{
  static int f=1;
  f=f*n;
  return f;
}

有些细节可能不够完善,希望有大佬能够指正,比心~

目录
相关文章
|
1月前
|
缓存 算法 Java
递归函数
递归函数
35 1
|
1月前
|
Go
用递归函数实现康托尔集
用递归函数实现康托尔集
27 2
|
4月前
|
算法
递归函数实现素数判断
该文介绍了素数判断的递归实现,尽管递归算法在判断素数上并不高效,时间复杂度和空间复杂度均为O(N),但作为学习和理解递归的一种方式,仍有其价值。文章强调在实际应用中应选择更高效的方法。递归思路基于试除法,对于大于1的整数,如果只能被1和自身整除,则为素数。递归函数通过不断试除2到根号下该数之间的数来判断,同时注意到偶数不是素数。文中给出了非递归和递归的试除法代码示例。
77 2
|
4月前
递归阶乘详解
递归阶乘详解
32 1
|
4月前
|
算法 C++
C++求阶乘的深入探索
C++求阶乘的深入探索
99 0
|
4月前
|
C语言
递归求阶乘
【1月更文挑战第18天】C语言实例——递归求阶乘。
32 1
|
9月前
|
算法 测试技术 C#
C++二分查找算法:阶乘函数后 K 个零
C++二分查找算法:阶乘函数后 K 个零
|
机器学习/深度学习 算法
使用递归方法和for循环方法求阶乘
使用递归方法和for循环方法求阶乘
137 0
|
机器学习/深度学习
递归函数问题
递归函数问题
58 0
用for循环求数的阶乘
用for循环求数的阶乘
107 0