1  

12(函数递归)_递归

2  

12(函数递归)_递推_02

3    递归的意思就是递推和回归(直到剥到最小为止)

12(函数递归)_栈溢出_03


当函数执行结束之后才会往后走(红色的线是递推  蓝色的线是回归)

12(函数递归)_递归_04

先打印1

例如printf("%d",printf("%d"));    先执行函数

适用递归(想像一下)

12(函数递归)_递推_05

12(函数递归)_递归_06


12(函数递归)_栈溢出_07

12(函数递归)_递归_08



#include<stdio.h>
int fib(int n)
{
	if (n == 1 || n == 2)
		return n;
	else
		return fib(n - 1) + fib(n - 2);
}


int main()
{
	int n = 0;
	scanf("%d", &n);
	int r = fib(n);
	printf("%d", r);


	return 0;
}


12(函数递归)_递归_09


12(函数递归)_栈溢出_10

它不会出现栈溢出但重复计算太多效率不高

12(函数递归)_递归_11

会出现栈溢出