![](https://static.youtibao.com/asksite/comm/h5/images/m_q_title.png)
下面关于函数的递归调用描述正确的是()。
A.必须有一个明确的结束条件
B.每次进入更深一层递归时,问题规模相比上次递归都应有所减少
C.递归调用效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧
D.由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出)
![](https://static.youtibao.com/asksite/comm/h5/images/solist_ts.png)
A.必须有一个明确的结束条件
B.每次进入更深一层递归时,问题规模相比上次递归都应有所减少
C.递归调用效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧
D.由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出)
A.多承中,多个基类必须采用相同的继承方式
B.多继承中,多个基类可以采用不同的继承方式
C.多继承中创建派生类对象时会先调用派生类构造函数,再调用各基类构造函数
D.多继承中创建派生类对象时各基类构造函数的调用顺序与基类的继承顺序一致
A.函数被定义后,输入函数名就可以调用函数了
B.函数被定义后,只有被调用才会被执行,否则这些代码就永远不会被执行
C.自定义函数可以先使用再定义
D.自定义函数不能带有参数
A.递归是将一个规模较大的问题分解为若干个规模较小的子问题
B.递归算法中拆分出来的子问题可以与原问题不同
C.递归函数至少要有一个出口,也就是判断结束调用的条件来结束递归体
D.递归算法按照先递推再回归的过程执行
B、构造函数和析构函数均可以重载
C、已知类Student以及Student*p;在使用p=newStudent;时自动调用无参构造函数创建动态对象,在deleltep;时自动调用析构函数释放动态对象
D、构造函数和析构函数都可以成为虚函数
下面是一个快速排序的逆归算法。为了避免最坏情况,取基准记录pivot采用从lelt,right和中取中间值,并交换到low位置的办法。数组A存放待排序的一组记录,数据类型为T,left和right是待排序子区间的最左端点和最右端点。
(1)实现三者取中子程序mediancy(A,left,right);
(2)改写QuickSort算法,不用栈消去第二个递归调用QuickSort(A,pivotPos+1,right);
(3)继续改写QuickSort算法,用栈消去剩下的递归调用。
A.Generator函数,又称生成器函数
B.声明Generator函数的关键字是:function*
C.Generator函数执行后得到的一个生成器
D.使用return语句使Generator函数暂停执行,直到next方法的调用