好像有什么不太着调的东西混进去了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; }
有些细节可能不够完善,希望有大佬能够指正,比心~