递归函数:
直接或间接调用自身的函数。
基本思想:
把一个大问题分解成小问题,小问题继续分解直至可以直接解决。
关键:
找出递归定义式与终止条件。
半数集问题(两种搜索方法)
方法一:
int comp(int n) //深搜
{
for ans=1; //自身
if(n<1) //终止条件
for(int i-1;i<=n/2;i++) //枚举
ans+=comp(i);
return ans;
}
方法二:
int a[1001]; //记忆搜索
int comp(int n)
{
int ans=1;
if(a[n]>0) return a[n]; //已经计算过的
for(int i=1;i<=n/2;i++)
ans+=comp(i);
a[n]=ans; //保存结果
return ans;
}
总之,递归在日常程序中十分普及,比如说走迷宫类的游戏,实际生活问题,等一系列问题都要用递归来解决,但是递归难就难在他的逻辑比较复杂,不易于理解。