阅读以下说明和流程图,回答问题将解答填入对应栏。 [说明] 本流程图实现采用递归函数来求一个整数数组中从元素0到元素n中的最小值。该算法思想是这样的,首先我们假设有一个求数组中最小元素的函数,然后,在求某一具有n的元素的数组的最小值时,只要

admin2010-12-16  25

问题 阅读以下说明和流程图,回答问题将解答填入对应栏。
   [说明]
   本流程图实现采用递归函数来求一个整数数组中从元素0到元素n中的最小值。该算法思想是这样的,首先我们假设有一个求数组中最小元素的函数,然后,在求某一具有n的元素的数组的最小值时,只要求将前n-1的元素的最小值与第n个元素比较即可。不断地重复这一过程,直到数组中只剩下一个元素,那么它必定是最小值。
   注:int min(int X,int y)为返回两数中最小数的函数。
   int minInArray(int a[],int n)为返回数组中最小数的函数。
   minA为数组中最小值。
   
   [问题l]
   将流程图的(1)~(4)处补充完整。
   [问题2]
   min()函数的定义为(5)。

选项

答案(1) minInArray(a,n); (2) 1; (3) minA=a[n-1]; (4) minA=min(minInArray(a,n-1),a[n]); (5) x<y?x:y;

解析 本题目考查流程图。
   题目是利用递归来求数组中的最小值,则一定是反复的调用一个求数组最小值的函数,直到比较数组中最后只剩下两个数,则(1)中填入的应是“minlnArray(a,n)”,然后,判断n的值是否为1,如果是,则说明数组中只有一个数,则它一定就是最小值,可以直接输出,所以(2)应填入“1”,(3)应填入“minA=a[n]”;如果n的值不是1,则说明要继续递归,则再次调用求数组最小值的函数,把数组前n-1项的最小值同第n项做比较,所以(4)填入“minA=min(minInArray(a,n-1),a[n])”,由于min()是一个比较函数,返回两数中较小的数,我们可以用三元运算符直接定义为x <y?x:y。
转载请注明原文地址:https://kaotiyun.com/show/YBjZ777K
0

最新回复(0)