更多"试写出二分查找的递归算法。"的相关试题:
[单项选择]将一个递归算法改为对应的非递归算法时,通常需要使用______。
A. 栈
B. 队列
C. 循环队列
D. 优先队列
[简答题]下面是快速排序的递归算法。试在算法后的空白中填上正确的内容,将该算法补充完整使其完成预定功能。#define M 500typedef struct{int key;char info;}NODENODE r[M];quiksort(NODE r[],int low,int hig) { int i, j; NODE x; if(low>=hig) return; i=low; j=hig;x=r[i]; do { while((r[j].key>=x.key)&&(j>i)) (1) ; if(ii)) (2) ; if(i (3) ; }(1)_____________(2)_____________(3)_____________
[单项选择]用递归算法实现n个相异元素构成的有序序列的二分查找,采用一个递归工作栈时,该栈的最小容量应为()。
A. n
B. n/2
C. 10g2n
D. 10g2(n+1)
[简答题]试编写一个非递归算法.实现求以二叉链表存储的二叉树中q结点的祖先。
[单项选择]
计算N!的递归算法如下,求解该算法的时间复杂度时,只考虑相乘操作,则算法的计算时间T(n)的递推关系式为 (55) ;对应时间复杂度为 (56) 。
int Factorial (int n)
{//计算n!
if(n<=1)return 1;
else return n * Factorial(n-1);
}
(55)处填()。
A. T(=T(n-1)+1
B. T(=T(n-1)
C. T(=2T(n-1)+1
D. T(=2T(n-1)-1
[单项选择]
用递归算法求解F(5)时需要执行 (63) 次“+”运算,该方法采用的算法策略是 (64) 。
(63)处填()。
A. 5
B. 6
C. 7
D. 8
[单项选择]设n的初始值为正整数,设计一个递归算法如下:
int fact (int n) {
if (n<=0) return 1;
else return (n*fact(n-1));
}
以下叙述中正确的是______。
A. 计算fact(n)需要执行n次函数调用
B. 计算fact(n)需要执行n+1次函数调用
C. 计算fact(n)需要执行n+2次函数调用
D. 计算fact(n)需要执行n-1次函数调用
[单项选择]设有一个递归算法如下
im fact(int n)
if(n<=0)return 1;
else return n * fact(n-1);下面正确的叙述是()。
A. 计算fact(n)需要执行n次函数调用
B. 计算fact(n)需要执行n+1次函数调用
C. 计算fact(n)需要执行n+2次函数调用
D. 计算fact(n)需要执行n-1次函数调用
[简答题]【说明】
本程序利用非递归算法实现二叉树后序遍历。
【函数】
#include<stdio.h>
#include<stdlib.h>
typedef struct node{/*二叉树的结点数据结构类型*/
char data;
struct node *left;
struct node *right;
}BTREE;
void SortTreelnsert(BTREE **tree, BTREE *s)
{
if(*tree==NULL)*tree=s;
else
if(s->data<(*tree)->data)
SortTreelnsert( (1) ,s);
else if(s->data>=(*tree)->data)
SortTreelnsert( (2) ,s);
}
void TraversalTree(BTREE *tree)
{
BTREE *stack[1 000],*p;
int tag[1000],top=0;
p=tree;
do{
while(p !=NULL)
{
stack[++top]=p;
(3) ;
tag[top]=0; /*标记栈顶结点的左子树已进行过后序遍历*/
}
while(top>0&& (4) )/*栈顶结点的右子树是否被后序遍历过*/
{
p=stack[top--];
putchar(p->data);
}
if(top>0)/*对栈顶结点的右子树进行后序遍历*/
{
(5) ;
tag[top]=1;
}
}while(top>0);
}
void PrintSortTree(BTREE *tree)
{
if(tree !=NULL)
{
printSortTree(tree->left);
[单项选择]设求解某问题的递归算法如下:
F(int n)
if n==1
Move(1);
else
F(n-1);
Move(n);
F(n-1);
求解该算法的计算时间时,仅考虑算法Move所进行的计算为主要计算,且Move为常数级算法,设算法Move的计算时间为k,当n=5时,算法F的计算时间为 (42) 。
A. 7k
B. 15k
C. 31k
D. 63k