全文摘自晴神视频 递归剑法
递归剑法
一、调用自己就是调用别人;
二、描述清楚一层做的事情;
三、不要陷入到层层展开中。
递归的定义:在函数中调用自己
什么是调用别人:
------>
什么是调用自己:
-------->
-------->
特性:
函数A 针对不同的参数,里面的定义是几乎一样的,意味着一定可以写出来一个比较统一的函数,来代表所有参数的情况,这样只需要把函数A定义一次就可以了。
这里的 A(N=1),是一个函数,内部的变量空间就和外面是独立的,也就是说:在这个空间内定义的局部变量不会影响到外面;在外面定义的局部变量,调用的时候也不会影响到里面。
例:“我的小鲤鱼”
#include <stdio.h>
void fish(int n) {
if (n == 0)
printf("我的小鲤鱼");
else {
printf("抱着");
fish(n - 1);
printf("的我");
}
}
int main() {
printf("吓得我抱起了");
fish(1);
printf("\n");
return 0;
}
递归的核心思路
问题分类
分治:完成某个可拆分的任务
穷举:穷举所有可能的情况
回溯:寻找满足条件的解