当前位置:网站首页>PTA递归练习
PTA递归练习
2022-08-03 16:50:00 【~小明学编程】
作者:~小明学编程
文章专栏:C语言基础知识
目之所及皆为回忆,心之所向皆为过往
目录
第一题:捡豆子(递归版)
题目:
有 n 颗豆子,每次捡 1 ~ 4 颗豆子,一共有多少种捡法?
函数原型
double Pick(int n);
说明:参数 n
是豆子的数量。若 n > 0,则函数值是捡豆子的方法总数,否则函数值为 0。
裁判程序
#include <stdio.h>
double Pick(int n);
int main()
{
int n;
scanf("%d", &n);
printf("%g\n", Pick(n));
return 0;
}
/* 你提交的代码将被嵌在这里 */
测试数据
输入样例 | 输出样例 |
---|---|
-5 | 0 |
0 | 0 |
1 | 1 |
2 | 2 |
3 | 4 |
4 | 8 |
5 | 15 |
35 | 5.35022e+009 |
要求:不得使用循环语句。
我的答案
double Pick(int n)
{
if (n < 0)
return 0;
else if (n >= 0 && n < 3)
return n;
else if (n == 3)
return 4;
else if (n == 4)
return 8;
else
return Pick(n - 1) + Pick(n - 2) + Pick(n - 3) + Pick(n - 4);
}
提交截图
第二题:母牛生小牛-递归
题目:
有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?递归实现(母牛第一年不生)。
函数接口定义:
int Cow(int n);
该函数返回第n天牛的总数量,递归实现。
裁判测试程序样例:
#include <stdio.h>
int Cow(int n);
int main()
{
int day;
scanf("%d", &day);
printf("%d\n", Cow(day));
return 0;
}
/* 请在这里填写答案 */
输入样例:
5
输出样例:
6
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
我的答案
int Cow(int n)
{
if (n<=0)
return 0;
else if (n < 4&&n>0)
return n;
else
return Cow(n-1) + Cow(n - 3);
}
提交截图
第三题:递归 递推
题目:
大一新生LinYX 最近学了一个新的算法—递归,他发现这个算法可以解决一些高中的数列问题,如果已知f1以及公式fn=a*fn-1+b,求fn很方便。聪明的你也应该已经学会了递归,那就来表现一下吧。
输入格式:
输入包含若干行数据,每行都有4个整数,n,f1,a,b。
输出格式:
输出fn 。每组测试数据显示在不同行。
输入样例:
在这里给出一组输入。例如:
1 4 1 1
1 6 2 3
2 2 1 1
输出样例:
在这里给出相应的输出。例如:
4
6
3
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
我的答案:
#include<stdio.h>
int Lin(int a,int b,int n,int f1)
{
if(n==1)
return f1;
else
return a*Lin(a,b,n-1,f1)+b;
}
int main()
{
int n,f1,a,b;
while(scanf("%d %d %d %d",&n,&f1,&a,&b)!=EOF)
{
printf("%d\n",Lin(a,b,n,f1));
}
return 0;
}
提交截图
第四题:递归法求最大公约数
题目:
两个正整数的最大公约数(Greatest Common Divisor,GCD)是能够整除这两个整数的最大整数。请实现程序,用递归方法计算两个数的最大公约数。
递归法:
当a > b时,a 和 b的最大公约数相当于 a - b 和 b 的最大公约数;
当b > a时,a 和 b的最大公约数相当于 b - a 和 a 的最大公约数;
当a = b时,a 和 b的最大公约数就是 a (或b);
程序输入:
由用户输入两个正整数
程序输出:
两个正整数的最大公约数。
如果输入的数不是正整数,则程序输出:
Input number should be positive!
函数接口定义:
int Gcd(int a, int b);
其中,a
和b
是用户输入的两个正整数。
函数返回a
和b
的最大公约数。
如果a
或b
小于等于0,则函数返回-1。
主程序样例:
这里给出主函数及对Gcd函数的调用样例:
#include <stdio.h>
int Gcd(int a, int b);
int main()
{
int a, b, c;
scanf("%d %d", &a, &b);
c = Gcd(a,b);
if (c != -1)
{
printf("%d\n", c);
}
else
{
printf("Input number should be positive!\n");
}
return 0;
}
/* 请在这里完成 Gcd 函数*/
输入样例:
在这里给出一组输入。例如:
15 20
输出样例:
在这里给出相应的输出。例如:
5
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
我的答案:
#include <stdio.h>
int Gcd(int a, int b);
int main()
{
int a, b, c;
scanf("%d %d", &a, &b);
c = Gcd(a,b);
if (c != -1)
{
printf("%d\n", c);
}
else
{
printf("Input number should be positive!\n");
}
return 0;
}
/* 请在这里完成 Gcd 函数*/
int Gcd(int a,int b)
{
if(a<=0||b<=0)
return -1;
else if(a==b)
return a;
else
{
if(a>b)
return Gcd(a-b,b);
else
return Gcd(b-a,a);
}
}
提交截图:
第五题:整数转换为字符串
题目:
将一个整数n转换成字符串。例如;输入483,应得到字符串"483"。其中,要求用一个递归函数实现把一个正整数转换为字符串。
输入格式:
首先输入测试组数T,然后输入T组测试数据。每组测试数据输入一个整数n(-2^31≤n≤2^31-1)。
输出格式:
对于每组测试,输出转换后的字符串。
输入样例:
1
1234
输出样例:
1234
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
我的答案:
#include<stdio.h>
void reverse(int n)
{
if(n<10)
printf("%d",n);
else
{
reverse(n/10);
printf("%d",n%10);
}
}
int main()
{
int T=0;
int arr[100]={0};
scanf("%d",&T);
for(int i=0;i<T;i++)
{
scanf("%d",&arr[i]);
}
for(int i=0;i<T;i++)
{
reverse(arr[i]);
printf("\n");
}
return 0;
}
提交截图:
边栏推荐
- 我想请问下,我们的数据库是在亚马逊,Dataworks 连不通,怎么办?
- C语言01、数据类型、变量常量、字符串、转义字符、注释
- 最强分布式锁工具:Redisson
- Async的线程池使用的哪个?
- How to write SQL statements in DataWorks monitoring data reaches a certain value to indicate the change of
- 【AppCube】零代码小课堂开课啦
- 如何选择合适的导电滑环型号
- TypeScript文件的编译执行
- #夏日挑战赛#【FFH】OpenHarmony设备开发基础(四)启动流程
- JS中对象数组用sort按属性排序
猜你喜欢
EasyExcel implements dynamic column parsing and table storage
TiKV & TiFlash 加速复杂业务查询丨TiFlash 应用实践
LeetCode·72.编辑距离·动态规划
protobuf 中数据编码规则
蒋松廷 荣获第六季完美童模全球总决赛 全球总冠军
从零开始搭建MySQL主从复制架构
After using Stream for many years, does collect still have these "saucy operations"?
产品-Axure9英文版,轮播图效果
C专家编程 第3章 分析C语言的声明 3.8 理解所有分析过程的代码段
面试突击71:GET 和 POST 有什么区别?
随机推荐
基于DMS的数仓智能运维服务,知多少?
【带你了解SDN和网络虚拟化】
兄弟组件通信context
Component communication - parent-child component communication
可复现、开放科研、跨学科合作:数据驱动下的科研趋势及应用方案
Cookie和Session的关系
自动化部署+整合SSM项目
C专家编程 第3章 分析C语言的声明 3.5 typedef可以成为你的朋友
C专家编程 第3章 分析C语言的声明 3.4 通过图标分析C语言的声明
Description of the functional scenario of "collective storage and general governance" in the data center
C专家编程 第3章 分析C语言的声明 3.8 理解所有分析过程的代码段
EMQX Newsletter 2022-07|EMQX 5.0 正式发布、EMQX Cloud 新增 2 个数据库集成
C专家编程 第1章 C:穿越时空的迷雾 1.11 轻松一下---由编译器定义的Pragmas效果
FinClip | July 2022 Product Highlights
FinClip | 2022 年 7 月产品大事记
[Unity Starter Plan] Making RubyAdventure01 - Player Creation & Movement
学会 Arthas,让你 3 年经验掌握 5 年功力!
The strongest distributed lock tool: Redisson
工程仪器设备在线监测管理系统常见问题和注意事项
阿里二面:没有 accept,能建立 TCP 连接吗?