递归.txt
来自「数据结构是计算机学科的一门核心课程。数据结构课程的 任务是讨论现实世界中数据的」· 文本 代码 · 共 57 行
TXT
57 行
递归
定义:若一个算法直接地或间接地调用自己本身,则称这个算
法是递归算法,简称递归。
递归算法用把问题分解为形式更加简单的子问题的方法来求解
问题。递归算法既是一种分析问题的方法,也是一种有效的算法设
计方法。递归算法是解决许多复杂应用问题的重要方法。
递归算法的执行过程
例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 + =
减小字号Ctrl + -
显示快捷键?