当前位置:网站首页>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;
}
提交截图:
边栏推荐
猜你喜欢
沃尔沃:这是会“种草”的“安全感”!
FinClip | 2022 年 7 月产品大事记
“68道 Redis+168道 MySQL”精品面试题(带解析),你背废了吗?
protobuf 中数据编码规则
【数据库数据恢复】SqlServer数据库无法读取的数据恢复案例
EMQX Newsletter 2022-07|EMQX 5.0 正式发布、EMQX Cloud 新增 2 个数据库集成
LeetCode·1163.按字典序排在最后的子串·最小表示法
EasyExcel implements dynamic column parsing and table storage
C专家编程 第3章 分析C语言的声明 3.7 typedef struct foo{... foo;}的含义
使用uniapp 封装一个request 请求
随机推荐
C专家编程 第3章 分析C语言的声明 3.5 typedef可以成为你的朋友
SQL中对 datetime 类型操作
C专家编程 第2章 这不是Bug,而是语言特性 2.2 多做之过
【目标检测】Focal Loss for Dense Object Detection
生产环境如何删除表呢?只能在SQL脚本里执行 drop table 吗
从零开始搭建MySQL主从复制架构
华为、联想、北汽等入选工信部“企业数字化转型和安全能力提升”首批实训基地
正向代理与反向代理
Hannah荣获第六季完美童模全球总决赛全球人气总冠军
【数据库数据恢复】SqlServer数据库无法读取的数据恢复案例
蒋松廷 荣获第六季完美童模全球总决赛 全球总冠军
JS 字符串转 GBK 编码超精简实现
phoenix创建映射表和创建索引、删除索引
C语言04、操作符
C专家编程 第3章 分析C语言的声明 3.7 typedef struct foo{... foo;}的含义
C专家编程 第1章 C:穿越时空的迷雾 1.6 它很棒,但它符合标准吗
FinClip | July 2022 Product Highlights
高效的组织信息共享知识库是一种宝贵的资源
双指针/滑动窗口问题
论文解读(JKnet)《Representation Learning on Graphs with Jumping Knowledge Networks》