CPP2022-14-递归(下)

简介: CPP2022-14-递归(下)

输入样例:

6

输出样例:

8
1. int f( int n )
2. {
3. if(n<=1)
4.     {
5. return n;
6.     }
7. else
8.     {
9. return f(n-1)+f(n-2);
10.     }
11. }

6-5 十进制转换二进制

分数 10

全屏浏览题目

切换布局

作者 C课程组

单位 浙江大学

本题要求实现一个函数,将非负整数n转换为二进制后输出。

函数接口定义:

void dectobin( int n );

函数dectobin应在一行中打印出二进制的n。建议用递归实现。

裁判测试程序样例:

#include <stdio.h> void dectobin( int n ); int main() { int n; scanf("%d", &n); dectobin(n); return 0; } /* 你的代码将被嵌在这里 */

输入样例:

10

输出样例:

1010
1. void dectobin( int n )
2. {
3. if(n==0)
4.     {
5. printf("0");
6.     }
7. else if(n==1)
8.     {
9. printf("1");
10.     }
11. else
12.     {
13. dectobin(n/2);
14. printf("%d",n%2);
15.     }
16. }

6-6 递归计算P函数

分数 15

全屏浏览题目

切换布局

作者 C课程组

单位 浙江大学

本题要求实现下列函数P(n,x)的计算,其函数定义如下:

函数接口定义:

double P( int n, double x );

其中n是用户传入的非负整数,x是双精度浮点数。函数P返回P(n,x)函数的相应值。题目保证输入输出都在双精度范围内。

裁判测试程序样例:

#include <stdio.h> double P( int n, double x ); int main() { int n; double x; scanf("%d %lf", &n, &x); printf("%.2f\n", P(n,x)); return 0; } /* 你的代码将被嵌在这里 */

输入样例:

10 1.7

输出样例:

3.05
1. double P( int n, double x )
2. {
3. if(n==0)
4.     {
5. return 1;
6.     }
7. else if(n==1)
8.     {
9. return x;
10.     }
11. else
12.     {
13. return ((2*n-1)*P(n-1,x)-(n-1)*P(n-2,x))/n;
14.     }
15. }

6-7 递归计算Ackermenn函数

分数 15

全屏浏览题目

切换布局

作者 C课程组

单位 浙江大学

本题要求实现Ackermenn函数的计算,其函数定义如下:

函数接口定义:

int Ack( int m, int n );

其中mn是用户传入的非负整数。函数Ack返回Ackermenn函数的相应值。题目保证输入输出都在长整型

范围内。

裁判测试程序样例:

#include <stdio.h> int Ack( int m, int n ); int main() { int m, n; scanf("%d %d", &m, &n); printf("%d\n", Ack(m, n)); return 0; } /* 你的代码将被嵌在这里 */

输入样例:

2 3

输出样例:

9
1. int Ack( int m, int n )
2. {
3. if(m==0)
4.     {
5. return n+1;
6.     }
7. else if(n==0&&m>0)
8.     {
9. return Ack(m-1,1);
10.     }
11. else if(m>0&&n>0)
12.     {
13. return Ack(m-1,Ack(m,n-1));
14.     }
15. }

6-8 汉诺塔问题

分数 20

全屏浏览题目

切换布局

作者 李祥

单位 湖北经济学院

汉诺塔是一个源于印度古老传说的益智玩具。据说大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着 64 片黄金圆盘,大梵天命令僧侣把圆盘移到另一根柱子上,并且规定:在小圆盘上不能放大圆盘,每次只能移动一个圆盘。当所有圆盘都移到另一根柱子上时,世界就会毁灭。

请编写函数,完成移动汉诺塔的任务。

函数原型

void MoveTower(int num, char src, char dst, char trs);

说明:参数 num 为金片数,srcdsttrs 分别为起始柱、目的柱和过渡柱。若金片数大于 0,则函数将金片组成的汉诺塔由起始柱利用过渡柱最终搬到目的柱,否则什么也不做。

下面的程序,输入汉诺塔圆片的数量,输出移动汉诺塔的步骤。

裁判程序

#include <stdio.h> void MoveTower(int num, char src, char dst, char trs); int main() { int n; char s, d, t; scanf("%d %c %c %c", &n, &s, &d, &t); MoveTower(n, s, d, t); return 0; } /* 你提交的代码将被嵌在这里 */

输入格式

圆盘数

起始柱 目的柱 过渡柱

输出格式

移动汉诺塔的步骤

每行显示一步操作,具体格式为:

盘片号: 起始柱 -> 目的柱

其中盘片号从 1 开始由小到大顺序编号。

输入样例

1. 3
2. a c b

输出样例

1. 1: a -> c
2. 2: a -> b
3. 1: c -> b
4. 3: a -> c
5. 1: b -> a
6. 2: b -> c
7. 1: a -> c
1. void MoveTower(int num, char src, char dst, char trs)
2. {
3. if(num==1)
4.  {
5.    printf("1: %c -> %c\n",src,dst);
6.    return;
7.  }
8.  MoveTower(num-1,src,trs,dst);
9.  printf("%d: %c -> %c\n",num,src,dst);
10.   MoveTower(num-1,trs,dst,src);
11.   return;
12. }
相关文章
|
NoSQL Go 数据库
2023最新版 Navicat 16.2+系列安装和试用教程详解:轻松掌握最新版本的数据库管理工具连接Redis
2023最新版 Navicat 16.2+系列安装和试用教程详解:轻松掌握最新版本的数据库管理工具连接Redis
652 0
|
算法 C++ 容器
C++标准库(速查)总结
C++标准库(速查)总结
318 6
|
机器学习/深度学习 人工智能 算法
探索深度学习在图像识别领域的最新进展
【10月更文挑战第10天】探索深度学习在图像识别领域的最新进展
383 0
|
开发框架 开发者
harmoneyOs 开发框架ArkTS工程目录结构简介
【7月更文挑战第11天】harmoneyOs 开发框架ArkTS工程目录结构简介
247 2
|
机器学习/深度学习 传感器 数据采集
深度学习之设备异常检测与预测性维护
基于深度学习的设备异常检测与预测性维护是一项利用深度学习技术分析设备运行数据,实时检测设备运行过程中的异常情况,并预测未来可能的故障,以便提前进行维护,防止意外停机和生产中断。
846 1
|
人工智能 自然语言处理 测试技术
巨擘之舞:探索AI大模型的发展历程与特性比较
巨擘之舞:探索AI大模型的发展历程与特性比较
|
网络协议 安全 Linux
网卡接口跃点数:概念与重要性解析
在计算机网络中,跃点数(Hop Count)是指数据包从源设备传输到目标设备时经过的路由器或网关数量,是衡量路径长度的关键指标。本文详细介绍了跃点数的概念、计算方法及其在网络管理中的重要性,包括性能评估、故障排除、网络优化及路由选择等方面的应用。通过使用traceroute或tracert命令,网络管理员可以轻松获取跃点数信息,并据此优化网络结构,提高数据传输效率和安全性。尽管跃点数是重要指标,但仍需与其他因素结合分析以全面评估网络性能。
|
JSON 安全 程序员
为什么POST请求会发送两次请求?
为什么POST请求会发送两次请求?
303 0
|
机器学习/深度学习 算法
基于CNN-GRU-Attention的时间序列回归预测matlab仿真
基于CNN-GRU-Attention的时间序列回归预测matlab仿真
|
存储 程序员 Shell
【C/C++ 内存管理函数】C语言动态内存管理大揭秘:malloc、calloc、realloc与new的对比与差异
【C/C++ 内存管理函数】C语言动态内存管理大揭秘:malloc、calloc、realloc与new的对比与差异
613 0