递归函数是函数的一种应用方式所以我们应该先明确函数的定义。
函数就是一块代码,用来接收参数,执行一件事并返回。
1.函数的结构:
2. 函数的调用
一般为 函数名(实参表)
实参可以是常量、变量,还可以是表达式,但如果实参中存在变量,在函数调用时,变量应是有确定值的。
这些值会被按照顺序进行初始化中的参数。
3.递归函数
递归即是该函数调用它本身自己,这种调用过程称为递归。
递归可以相当于循环,所以想结束递归,就必须有终止递归的条件测试部分,否则就会出现无限递归(即无限循环),即一定要定义递归的边界。
用递归解决n阶乘的例子
#include <iostream>
using namespace std;
int POW(int x,int y);
int main()
{
int a,b;
cin>>a>>b;
cout<<a<<"的"<<b<<"次方=";
cout<<POW(a,b);
return 0;
}
int POW(int x,int y)
{
int i,z=1;
for(i=0;i<y;i++)
{
z=x*z;
}
return z;
}
可以看出,每级函数调用都有自己的变量,递归调用就相当于又从头开始执行函数的代码。
每次函数调用都会返回一次,并且按顺序逐级返回递归。
4.递归函数的优缺点
优点:
1.适合解决阶乘、涉及相反顺序的编程问题
2.相比同类题其他模式简洁
缺点:
1.运行效率低,无论是计算时间和耗费内存空间都比非递归要多
5.总结
递归函数遵规守纪,按照严格给出的规定运行,所以在递归运算时一定要注意对边界和开始的定义,正确的定义递归,是递归运算的难点。