额,写标题时突然想到递归和回溯有啥区别
我的理解是这样
递归是自己定义终止条件一条或多条路一起走到黑
回溯是计算机自己判断终止条件碰到终止条件就换路
参考于此
想要进一步理解,可参考汉诺塔和八皇后的微妙区别
不说了,上二分代码~
int find(int n,int left,int right,int mid,int matrix[])
{//n是目标数字,目的是返回目标数字下标,否则返回-1
if(n==matrix[mid])
{
return mid;
}
if(left>=right)
{
return -1;
}
if(n>matrix[mid])
{
left=mid;
mid=(right+left)/2;
return find(n,left,right,mid,matrix);
}
if(n<matrix[mid])
{
right=mid;
mid=(right+left)/2;
return find(n,left,right,mid,matrix);
}
}