递归
首先注意:递归必须有结束条件,否则程序将崩溃。
先看一个简单的题目:计算阶乘
循环法(传统):
#include<stdio.h>
long fact(int num);
long fact(int num)
{
long result;
for(result = 1; num>1;num--)
{
result*=num;
}
return result;
}
int main()
{
int num;
printf("请输入一个正整数:");
scanf("%d",&num);
printf("%d的阶乘是:%d\n",num,fact(num));
return 0;
}
递归法:
#include<stdio.h>
long fact(int num);
long fact(int num)
{
long result;
if(num>0)
{
result = num * fact(num-1);
}
else
{
result = 1;
}
return result;
}
int main()
{
int num;
printf("请输入一个正整数:");
scanf("%d",&num);
printf("%d的阶乘是:%d\n",num,fact(num));
return 0;
}
实现递归需要满足的两个基本条件:
1.调用函数本身
2.设置了正确的结束条件