1.循环:
int main()
{
int i, n;
int ret = 1;
scanf("%d", &n);
for (i = 1; i <= n; i++)
ret *= i;
printf("%d", ret);
return 0;
}
2.递归:
(1)
int factoria(int n)
{
if(n==1)
return 1;
else
return n*factoria(n-1);
}
int main()
{
int n;
scanf("%d",&n);
int ret=factoria(n);
printf("%d",ret);
return 0;
}
(2)int factoria(int n) {
int a = n * (n - 1);
if ((n - 1) > 1)
return (a / (n - 1)) * factoria(n - 1);
return a;
}
int main()
{
int n;
scanf("%d", &n);
int ret = factoria(n);
printf("%d", ret);
return 0;
}
对(2)的注解:
int factoria(int n) {
int a = n * (n - 1);
if((n - 1) > 1)
return (a / (n - 1)) * factoria(n - 1);//返回:n((n-1)(n-2)*(n-3)
return a;
}
int factoria(int n) {
int a = n * (n - 1);//(n-1)*(n-2)
if ((n - 1) > 1)
return (a / (n - 1)) * factoria(n - 1);//返回:(n-1)(n-2)(n-3)
return a;
}
int factoria(int n) {
int a = n * (n - 1);//(n-2)*(n-3)=n-2
if ((n - 1) > 1)//n-3=1
return (a / (n - 1)) * factoria(n - 1);
return a;//返回:(n-3)(n-2)
}
int main()
{
int n;
scanf("%d", &n);
int ret = factoria(n);
printf("%d", ret);
return 0;
}