定义
- 一个函数直接或间接的调用自己
递归满足三个条件
- 递归必需有一个明确的终止条件
- 该函数所处理的数据规模必须在递减
- 这个转化必须是可解的
循环和递归
递归
- 易于理解
- 速度慢
- 所需存储空间大(函数调用需要发送形参与实参,还要对调用函数压栈,这些都需要分配内存空间)
循环
- 不易理解
- 速度快
- 所需存储空间小
#include <stdio.h>
#include <stdlib.h>
/**
递归求阶乘
*/
long factorial(int n){
if(1==n) //递归结束条件
return 1;
else
return factorial(n-1)*n;
}
int main()
{
int n;
printf("请输入你要求阶乘的数:");
scanf("%d",&n);
printf("你所求的阶乘是:%ld\n",factorial(n));
return 0;
}
运行结果: