// ConsoleApplication15.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
#include <stdio.h>
using namespace std;
long fact(int n);//使用循环方法
long rfact(int n);//使用递归方法
int main(void)
{
int num;
printf("This program calculates factorials\n");
printf("Enter a value in the range 1-12 (q to quit)\n");
while (scanf_s("%d",&num)==1)
{
if (num < 0)
{
printf("No negative numbers,please.\n");
}
else if (num>12)
{
printf("Keep input under 13\n");
}
else
{
printf("loop:%d factorial =%ld\n", num, fact(num));
printf("recuresion :%d factorial = %ld\n", num, rfact(num));
}
printf("Enter a value in tha range 1-12(q to quit)\n");
}
printf("Bye\n");
return 0;
}
long fact(int n) {
long ans;
for ( ans = 1; n > 1 ; n--)
{
ans *= n;
}
return ans;
}
long rfact(int n) {
long ans;
if (n > 0)
{
ans = n * rfact(n - 1);
}
else
{
ans = 1;
}
return ans;
}