/**********
【题目】试编写如下定义的递归函数的递归算法:g(m,n) = 0             当m=0,n>=0g(m,n) = g(m-1,2n)+n   当m>0,n>=0
**********/
int G(int m, int n)
/* 如果 m<0 或 n<0 则返回 -1 */
{if (m < 0 || n < 0) return -1;else if (m == 0 && n >= 0) return 0;else if (m > 0 && n >= 0) return G(m - 1, 2 * n) + n;
}
/**********
【题目】试写出求递归函数F(n)的递归算法:F(n) = n+1      当n=0F(n) = nF(n/2)  当n>0
**********/
int F(int n)
/* 如果 n<0 则返回 -1 */
{if (n < 0) return -1;else if (n == 0) return n + 1;else if (n > 0) return n * F(n / 2);
}
/**********
【题目】求解平方根 的迭代函数定义如下:sqrt(A,p,e) = p                   当|p*p-A|<esqrt(A,p,e) = sqrt(A,(p+A/p)/2,e) 当|p*p-A|>=e
其中,p是A的近似平方根,e是结果允许误差。试写出相
应的递归算法。
**********/
float Sqrt(float A, float p, float e)
{float error = (p * p - A) < 0 ? -(p * p - A) : (p * p - A);if (error < e) return p;return Sqrt(A, (p + A/p)/2, e);
}
/**********
【题目】已知Ackerman函数的定义如下:akm(m,n) = n+1                 当m=0akm(m,n) = akm(m-1,1)          当m!=0,n=0akm(m,n) = akm(m-1,akm(m,n-1)) 当m!=0,n!=0
请写出递归算法。
**********/
int Akm(int m, int n)
/* 若 m<0 或 n<0 则返回-1  */
{if (m < 0 || n < 0) return -1;    else if (m == 0) return n + 1;    else if (m != 0 && n == 0) return Akm(m-1, 1);else if (m != 0 && n != 0) return Akm(m-1, Akm(m, n-1));
}
/**********
【题目】试写出求递归函数F(n)的非递归算法:F(n) = n+1      当n=0F(n) = nF(n/2)  当n>0
**********/
int F(int n)
/* 如果 n<0 则返回 -1 */
{if (n < 0) return -1; int res = 1;    while (n) {res *= n;        n /= 2;    }return res;
}
/**********
【题目】求解平方根 的迭代函数定义如下:sqrt(A,p,e) = p                   当|p*p-A|<esqrt(A,p,e) = sqrt(A,(p+A/p)/2,e) 当|p*p-A|>=e
其中,p是A的近似平方根,e是结果允许误差。试写出相
应的非递归算法。
**********/
float Sqrt(float A, float p, float e)
{while (((p * p - A) < 0 ? -(p * p - A) : (p * p - A)) >= e) {p = (p + A/p)/2;}return p;
}
/**********
【题目】假设以二维数组g[1..m][1..n]表示一个图像
区域,g[i][j]表示该区域中点(i,j)所具颜色,其值
为从0到k的整数。试编写递归算法,将点(i0,j0)所在
区域的颜色置换为颜色c。约定与(i0,j0)同色的上、
下、左、右的邻接点为同色区域的点。表示图像区域的类型定义如下:
typedef char GTYPE[m+1][n+1];
**********/
void ChangeColor(GTYPE g, int m, int n, char c, int i0, int j0)
/* 在g[1..m][1..n]中,将元素g[i0][j0] */
/* 所在的同色区域的颜色置换为颜色c    */
{char temp;if(i0 <1|| i0 > m || j0 <1|| j0 > n)return;    temp = g[i0][j0];if(c == temp)return;g[i0][j0]= c;if(i0-1 >= 1 && g[i0-1][j0] == temp)ChangeColor(g, m, n, c, i0-1, j0);if(i0+1 <= m && g[i0+1][j0] == temp)ChangeColor(g, m, n, c, i0+1, j0);if(j0-1 >= 1 && g[i0][j0-1] == temp)ChangeColor(g, m, n, c, i0, j0-1);if(j0+1 <= n && g[i0][j0+1] == temp)ChangeColor(g, m, n, c, i0, j0+1);
}
/**********
【题目】试按依次对每个元素递归分解的分析方法重写求广义表的深度的递归算法。
广义表类型GList的定义:
typedef enum {ATOM,LIST} ElemTag;
typedef struct GLNode{ElemTag tag;union {char atom;struct { GLNode *hp, *tp;} ptr;}un;
} *GList;
**********/
int GListDepth(GList ls)
/* Return the depth of list */
{if (!ls) return 1;if (ls->tag == ATOM) return 0;return GListDepth(ls->un.ptr.hp)+1 > GListDepth(ls->un.ptr.tp) ? GListDepth(ls->un.ptr.hp)+1 : GListDepth(ls->un.ptr.tp);
}
/**********
【题目】试编写判别两个广义表是否相等的递归算法。
广义表类型GList的定义:
typedef enum {ATOM,LIST} ElemTag;
typedef struct GLNode{ElemTag tag;union {char atom;struct { GLNode *hp, *tp;} ptr;}un;
} *GList;
**********/
Status Equal(GList A, GList B)
/* 判断广义表A和B是否相等,是则返回TRUE,否则返回FALSE */
{if (!A && !B || A->tag==ATOM && B->tag==ATOM && A->un.atom==B->un.atom) return TRUE;    if (A->tag==LIST && B->tag==LIST) return Equal(A->un.ptr.hp, B->un.ptr.hp) && Equal(A->un.ptr.tp, B->un.ptr.tp);return 0;
}
/**********
【题目】试编写递归算法,输出广义表中所有原子项及其所在层次。
广义表类型GList的定义:
typedef enum {ATOM,LIST} ElemTag;
typedef struct GLNode{ElemTag tag;union {char atom;struct { GLNode *hp, *tp;} ptr;}un;
} *GList;
**********/
void OutAtom(GList A, int layer, void(*Out2)(char, int))
/* 递归地用函数Out2输出广义表的原子及其所在层次,layer表示当前层次 */
{if (!A) return;    if (A->tag==ATOM) Out2(A->un.atom, layer);else if (A->tag==LIST) OutAtom(A->un.ptr.hp, layer+1, Out2), OutAtom(A->un.ptr.tp, layer, Out2);
}

2021 广工 Anyview 数据结构第 5 章相关推荐

  1. 广工anyview数据结构第四章(2021.12)

    广工anyview数据结构习题第四章, 在学习过程中部分题目参考了Giyn .戮漠.雁过留痕等大佬的代码,在此感谢. 题目解法不是最优解,但希望能给大家有所启发.同时也发了文档资源,需要可自取. 目录 ...

  2. 广工Anyview数据结构2021-C语言版--第一章

    将三个整数按升序重新排列 算法思考: //首先随机比较三选二     /*     算法实现原理:     若a<b,则交换a,b,使得a>b,进而继续比较a.c,若a<c,则交换a ...

  3. 广工 AnyviewC 数据结构习题 第四章

    广工 AnyviewC 数据结构习题 第四章 广工 AnyviewC 数据结构习题 第四章 1[题目]已知某哈希表的装载因子小于1,哈希函数H(key) 2[题目]假设哈希表长为m,哈希函数为H(x) ...

  4. 广工 AnyviewC 数据结构习题 第五章

    广工 AnyviewC 数据结构习题 第五章 广工 AnyviewC 数据结构习题 第五章 1[题目]试编写如下定义的递归函数的递归算法: 2[题目]试写出求递归函数F(n)的递归算法: 3[题目]求 ...

  5. 2021广工计算机考研,2021计算机考研大纲大纲什么时候公布

    2021全国硕士研究生招生考试大纲将在9月9日正式发布上市,考研大纲是由教育部考试中心组织编写.高等教育出版社出版.官方发布的权威考研指南. 考纲发布时要如何复习?--抓住'变'和'不变' 1.'变' ...

  6. 2021广工计算机考研,2021年计算机考研大纲原文(持续更新中)

    I 考试性质 计算机学科专业基础综合考试是为高等院校和科研院所招收计算机科学与技术学科的硕士研究生而设置的具有选拔性质的联考科目,其目的是科学.公平.有效地测试考生掌握计算机科学与技术学科大学本科阶段 ...

  7. 工程制图第四章【广工】

    这篇博客为广工工程制图课件,同时也是学习笔记,侵权删. 文章目录 4.1 轴测图基本知识 4.1.1轴测图的形成 4.1.2基本术语 4.1.3分类 4.1.3投影特征 4.1.4基本作图方法 4.2 ...

  8. 广工的计算机硕士全国排名s,2021年广东工业大学排名,附全国最新排名

    高考填报志愿的时候很多学生关注大学的排名,本文小编整理了最新2020年广东工业大学的全国排名相关知识,该排名数据来源于中国校友会团队发布的2019中国大学排行榜(点击这里查看2019中国大学排名800 ...

  9. 广工的计算机全国排名,广东工业大学排名2021 广东排名第10全国排名第152

    广东工业大学排名2019 广东排名第10全国排名第152 每年的大学排名位次争议很大,虽然各大学校长口头上称不在乎.不看重,但实际上却卯足干劲,希望学校排名靠前,因为大学排名一定程度上体现了高校的办学 ...

最新文章

  1. 使用OpenSSL实现证书操作
  2. 母亲的牛奶 Mother's Milk
  3. java视频流传输_目前在Web浏览器中流式传输实时视频的最佳做法?
  4. 平板电脑办公软件_大屏平板互动软件-平板电脑触摸大屏控制软件
  5. 网络基础:收集必备的网络基础知识
  6. 工业级光纤收发器九大技术优势介绍
  7. python环境变量配置步骤_关于人工智能Python系统环境变量设置步骤
  8. idea重写接口没有@override_接口和抽象有什么区别?
  9. 为什么有些人退休后,一下子衰老了很多?
  10. MATLAB 生成exe 的几种方法
  11. 鸿蒙对抗谷歌,华为下定决心对抗谷歌,打出第一张王牌,鸿蒙系统更进一步
  12. Android强制设置屏幕旋转方向 Force rotation
  13. 使用RssHub为网页生成RSS订阅源
  14. 世界互联网大会为什么把这么重要的奖颁给蚂蚁金服?
  15. tensor之维度转换
  16. 猫眼电影爬虫和数据分析
  17. Apache NIFI InvokeHTTP
  18. STM32CubeMx入门教程
  19. 有人说越来越多的大学生沉溺于游戏,为什么?
  20. Python编程从入门到实践最详细教程

热门文章

  1. u-boot for tiny210 ver2.2(by liukun321咕唧咕唧)
  2. Spring源码分析之BOP/IOC/DI/AOP
  3. 【我的OpenGL学习进阶之旅】解决着色器语法错误:The shader uses varying u_Color, but previous shader does not write to it
  4. 考研逻辑整理 - 类比推理和归纳推理
  5. 让背景出现毛玻璃的效果
  6. 宝存 shannon PCI-E SSD VS OCZ RevoDrive3 X2 PCI-E SSD on CentOS 6.5 2.6.32-431.el6.x86_64
  7. 全球天气网(tianqi.com)天气预报调用插件
  8. python写一个斗地主(未完成)
  9. excel如何数据汇总之多工作簿
  10. spark submit参数及调试