循环阶乘
循环阶乘就是让用户输入一个数,然后以for循环的样子将小于这个数的数进行循环相乘,然后得到的数据就是这个数的阶乘. 利用for循环
n!=n*(n-1)*(n-2)…
如下面例题:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main()
{
int sum = 1;
int n;
printf("please enter number:\n");
scanf("%d", &n); //赋值
for (int i = 1; i <= n; i++) //这里用for循环出小于等于这个数的数
{
sum = sum*i; //将循环出来的数依次相乘
}
printf("SUM=%d", sum); //输出
system("pause");
return 0;
}
这个题目的主要思想就是用不同的方法展现出对于阶乘有不同的求法,让我们学会用多种方式去解决这种题目.不难,多敲一下,重在理解.
递归阶乘
运用递归的方式来解决这个题目,就是自己定义一个函数,将其函数的内容用一个if语句,在利用返回值进行再一次的运算,直到运算到结尾即可.整体也是挺简单的,主要就是运用了调用函数的思想.,递归方式的调用原来的函数.
如下面例题:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int fun(int n) //自己定义的调用函数
{
if (n == 1 || n == 0) //当n=0\1时
return 1; //输出1
return n*fun(n - 1); //否则输出n倍的这个函数,在一次进行重新运用这个函数,直到n=0\1
} //重新出现,则这个循环结束,输出的就是这个数的阶乘
int main()
{
int n;
scanf("%d", &n);
printf("%d\n", fun(n)); //在打印这个函数的时候,将这个n值赋给了这个函数,并将这个函数进行了调用
system("pause");
return 0;
}
就我理解的而言,这个递归的意思,就是将这个函数一次又一次的循环调用,直到最后这个循环结束.很简单的例题,主要理解思路,记得还要多敲代码,多敲就能熟练.