题目
本题要求实现一个非负整数阶乘的简单函数
其中N是用户传入的参数,其值不超过12.如果N是非负整数,则该函数必须返回N的阶乘,否则返回0.
一、函数接口定义
int Factorial( const int N );
二、裁判测试程序样例
#include <stdio.h>
int Factorial( const int N );
int main()
{
int N, NF;
scanf("%d", &N);
NF = Factorial(N);
if (NF) printf("%d! = %d\n", N, NF);
else printf("Invalid input\n");
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例
5
输出样例
5!= 120
代码长度限制: 16KB
时间限制: 400ms
内存限制: 64MB
代码如下:
思路:
首先我们得先了解阶乘的定义 :
以题目中的输出样例为例,5的阶乘为5!=1*2*3*4*5
然后将N分为非负整数和负数两类情况
当N<0时,按题目条件返回0
当N>0时,再对N进行阶乘的计算
创建变量sum用来储存每一轮相乘后的结果
使用变量i在循环中逐轮增加i的值再乘上上一轮的结果即sum
最后创建一个for循环来实现上述算法
int Factorial(const int N)
{
if(N<0)
return 0;
else
{
int i, j;
int sum = 1;
for (i = 1; i <= N; i++)
{
sum = sum * i;
}
return sum;
}
}