这是我近期写的一个关于计算阶乘的程序:
程序代码:
/* 计算一个数的阶乘 */
//用两种方法来计算 0 - 12 之间 任何一个数的阶乘
//一种 循环 一种递归
#include <stdio.h>
#include <windows.h>
long f_fact(int num);
long r_fact(int num);
void main()
{
int num;
printf("阶乘数计算程序!\n");
printf("请输入0 - 12 之间任何一个数(q键退出程序):");
while(scanf("%d",&num)==1){
if(num<0||num>12){
printf("不可超出范围值!请重新输入:");
scanf("%d",&num);
}
else{
printf("用for循环得出来的该数阶乘值:%d\n",f_fact(num));
printf("用递归程序得出来该数阶乘值:%d\n",r_fact(num));
}
printf("请输入0 - 12 之间任何一个数(q键退出程序):");
}
printf("Bye!\n");
Sleep(1500);
}
long f_fact(int num)//for 循环
{
int fact=1,i;
if(num==0)
fact=1;
else{
for(i=1;i<=num;i++)//这里关键点是 fact初始值为1 fact的值 随着i的不断自增 也不断增加;
fact*=i;//fact=fact*i 比如说i要自增到5 i不断的增加 而fact的初始值为1 所以就是1*2*3*4*5
}
return fact;
}
long r_fact(int num)//递归也是循环的一种 但这种方法 需要慎用!
{
long fact;
if(num>0)
fact=num*r_fact(num-1);
else
fact=1;
return fact;
//递归可以理解为函数的一次次调用本身 直到某个条件满足时 停止调用 但递归有利也有弊 需要慎用.
}
个人意见 如有不明白 尽管指出