📄 递归.txt
字号:
递归
定义:若一个算法直接地或间接地调用自己本身,则称这个算
法是递归算法,简称递归。
递归算法用把问题分解为形式更加简单的子问题的方法来求解
问题。递归算法既是一种分析问题的方法,也是一种有效的算法设
计方法。递归算法是解决许多复杂应用问题的重要方法。
递归算法的执行过程
例1:给出按照公式计算阶乘函数的递归算法,并给出n=3时递归算
法的执行过程。
设计:按照公式 /当n=0时 n!=0
\当n>0时 n!=n*(n-1)
计算阶乘函数的递归算法如下:
long int Fact(int n)
{
int x;
long int y;
if(n<0) /*n<0时阶乘无定义*/
{
printf("参数错!");
return -1;
}
if(n==0) return 1;
else
{
y=Fact(n-1); /*递归调用*/
return n*y;
}
}
例2:给出在有序数组a中查找数据元素x是否存在的递归算法。
设计: 算法的参数为:有序数组a,要查找的数据元素x,数组下界
下标low,数组上界下标high。当在数组a中查找到数据元素x时函数
返回数组a的下标;当在数组a中查找不到数据元素x时函数返回一1。
递归算法如下:
int BSearch(int a[],int x,int low,int high)
{
int mid;
if(low>high) return -1; /*查找不成功*/
mid=(low+high)/2;
if(x==a[mid]) return mid; /*查找成功*/
else if(x<a[mid])
return BSearch(a,x,low,mid-1); /*在下半区查找*/
else
return BSearch(a,x,mid+1,high); /*在上半区查找*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -