目录
递归定义
递归指函数自己调用自身,它在计算机内部创建了一个栈。
递归三要素
1.终止条件 :一个递归如果没有终止函数,就会陷入死循环那么系统分配的栈空间将会溢出
2.函数的返回值 :确定递归过程中需要处理的参数,明确每次递归的返回值进而确定递归函数的返回类型
3.递归的逻辑 :就是递归执行的内容
递归的运行逻辑
递归是一种栈结构,栈是先进后出的数据结构,例如阶乘程序
# include<iostream>
using namespace std;
int fact(int n) {
if (n == 1) {
return 1;
} else {
return n * fact(n - 1);
}
}
int main()
{
int i;
cin>>i;
cout<<fact(i);
return 0;
}
假设i=4那么它的运行过程是什么?
fact(4)=fact(3)*4=fact(2)*3*4=fact(1)*2*3*4=4!
在计算机内部是这样的
递归实例:斐波那契数列
递归逻辑:上一项+上上项
fbnq(m-1)+fbnq(m-2)
递归返回:斐波那契数列第n项
递归终止条件:m<=2
#include <iostream>
using namespace std;
int fbnq(int m)
{
if(m<=2) return 1;
return fbnq(m-1)+fbnq(m-2);
}
int main()
{
int m;
cin>>m;
cout<<fbnq(m);
}
这就是斐波那契数列的完整代码