目录
递归是什么?
C语言中,递归就是函数自己调用自己
每一次函数调用都会占有一块内存空间:函数栈帧空间(运行时堆栈)
递归的思想:
把一个大型复杂问题层层转化为一个与原问题相似,但规模较小的子问题来求解;直到子问题不能再拆分,递归问题就结束了,所以递归的思考方式就是把大事化小的过程
递归中的递就是递推的意思,归就是回归的意思;
递归的限制条件:
递归在书写时,有2个必要条件:
- 递归存在限制条件,当满足这个限制条件的时候,递归便不再继续
- 每次递归调用之后越来越接近这个限制条件
经典编程题:斐波那契数列
迭代法:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int fib(int n)
{
int a = 1, b = 1, m = 0;
if (n == 1 || n == 2)
return 1;
while (n >= 2)
{
m = a + m;
a = b;
b = m;
n--;
}
return m;
}
int main()
{
int n;
scanf("%d", &n);
printf("%d", fib(n));
}
递归法:
int fib(int n)
{
if (n == 1 || n == 2)
{
return 1;
}
else
{
return fib(n - 1) + fib(n - 2);
}
}
int main()
{
int n ;
int ret = 0;
scanf("%d", &n);
ret = fib(n);
printf("ret=%d", ret);
return 0;
}