#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
// 用平常的方法也就是for循环求一个数的阶乘
int main()
{
int a;
int i = 1;
int ret = 1;
printf("请输入一个数:\n");
scanf("%d", &a);
for (i=1;i<=a;i++)
{
ret = ret * i;
}
printf("%d\n", ret);
}
运行结果如下:
下面显示的是利用递归的方法求一个数的阶乘:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//C语言的递归调用:函数自己调用自己就是递归
//利用递归求一个数的阶乘
int f(int n)
{
if (1 == n)//递归的判断条件一定是写到递归公式之前的
{
return 1;//一定要写结束条件
}
return n * f(n - 1);//第一步是写好公式
}
int main()
{
int n = 5;
int result = f(n);
printf("result=%d\n", result);
}
运行结果如下:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//利用递归编写
//假如有n个台阶,一次只能上1个台阶或2个台阶,请问走到第n个台阶有几种走法 ?
//为便于读者理解题意,这里举例说明如下 : 假如有3个台阶,那么总计就有3种走法:
//第一种为每次上1个台阶,上3次;
//第二种为先上2个台阶,再上1个台阶;
//第三种为先上1个台阶,再上2个台阶。
int step(int n)
{
if (1 == n)
{
return 1;
}
if (2 == n)
{
return 2;
}
return step(n - 1) + step(n - 2);
}
int main()
{
int n;
int ret;
printf("请输入台阶数:\n");
scanf("%d",&n);
ret = step(n);
printf("ret=%d\n", ret);
}
运行结果如下: