测试主函数设计如下: #f include <stdio.h> main(void) { int al-={1,3,4,5,17,18,31,33}; intx=17 int bn: bn= BSearch(a, x, 0,); f(bn=-1) printi"不在数组a中"); else printi("在数组a的下标%d中",bn)
12 测试主函数设计如下: # include <stdio.h> main(void) { int a[] = {1, 3, 4, 5, 17, 18, 31, 33}; int x = 17; int bn; bn = BSearch(a, x, 0,7); if(bn == -1) printf("x不在数组a中"); else printf("x在数组a的下标%d中", bn); }
BSearch(a,x,0,7)的递归调用过程如图6-3际示,其 中,实箭头表示函数调用,虚箭头表示函数的返回值。 图6-3 BSearch(a,x,0,7)的递归调用过程
13 BSearch(a, x, 0,7)的递归调用过程如图6-3所示,其 中,实箭头表示函数调用,虚箭头表示函数的返回值。 图6-3 BSearch(a, x, 0,7)的递归调用过程
17 baFISearcha,,0,7) 4 brcDSearch(a, x0, 7 ∴ bIsEArch(a,x47〕 bIcDSea rcha, I, 4, 4) mid=3 mi d5 mi d=4 return(br-ESeare(a,x,47〕 return (bn-BS earch(a, 4,4, 4) re turn(4) 14
14
63递归算法的设计方法 递归算法既是一种有效的算法设计方法,也是一种有效的分 析问题的方法。 递归算法求解问题的基本思想是:对于一个较为复杂的问题 把原问题分解成若千个相对简单且类同的子问题这样,原问题 就可递推得到解
15 6.3递归算法的设计方法 递归算法既是一种有效的算法设计方法,也是一种有效的分 析问题的方法。 递归算法求解问题的基本思想是:对于一个较为复杂的问题, 把原问题分解成若干个相对简单且类同的子问题,这样,原问题 就可递推得到解