### 要求使用递归完成所有习题 ###
* A、递归求和
* B、倒序输出
* C、递归计数
* D、Kimi数列
* E、蜂房
* F、骨牌覆盖
# A、递归求和 #
**题目描述**
* 使用递归编写一个程序,求: S(n)=1-1/2+1/3-1/4+1/5-1/6+…
**输入**
* 多组数据输入,每组输入一个正整数n。
**输出**
* 输出S(n)的计算结果(精确到小数点后六位)。
**样例输入 Copy**
1
**样例输出 Copy**
1.000000
**`java代码:`**
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Main juele = new Main();
int n;
while(sc.hasNext()){
n = sc.nextInt();
java.text.DecimalFormat leile = new java.text.DecimalFormat("0.000000");
System.out.println(leile.format(juele.cbb(n)));
}
}
public double cbb(int n){
if (n==0) return 0;
if (n==1) return 1;
if (n%2==0){
return cbb(n-1)-(double)1/n;
}else
return cbb(n-1)+(double)1/n ;
}
}
**`C语言代码:`**
#include
double cbb();
int main()
{
int n;
while(scanf("%d",&n)!=EOF){
printf("%lf\n",(double)cbb(n));
}
return 0;
}
double cbb(int n){
if(n==0)
return 0;
if(n==1)
return 1;
if(n%2==0)
return cbb(n-1)-(double)1/n;
else
return cbb(n-1)+(double)1/n;
}
> 【这题其实不是很难,但是不知道为什么,我的另一个思路实现不了,可能就是技术不行吧!o(╥﹏╥)o
> 我从周五早上开始搞这个题,来CSDN看人家的代码一遍一遍的改,改到了周六晚上,才做出来,最大的错误就是C语言代码里递归函数没有声明,(╯▔皿▔)╯】
# B、倒序输出 #
**题目描述**
* 使用递归编写一个程序,逆序输出一个非负整数。例如输入1234,输出4321(不含前导0)。
**输入**
* 多组输入,每组输入一个非负整数。
**输出**
* 逆序输出结果,每个结果占一行。
**样例输入 Copy**
12
1230
0
**样例输出 Copy**
21
321
0
**`C语言代码:`**
#include
int cbb();
int main()
{
int n;
while(scanf("%d",&n)!=EOF){
printf("%d\n",cbb(n));
}
}
int cbb(int n){
int bb = 0;
while(n>0){
bb = bb*10+n%10;
n = n/10;
}
return bb;
}
> 【这个题并没有改Java代码了 ,凑合着这样吧,泪流满面】
# C、递归计数 #
**题目描述**
* 编写一个递归程序,返回一个字符串中大写字母的数目。例如,输入“AbcD”,输出2。
**输入**
* 多组输入,每组包括一个仅由大小写字母组成的字符串。
**输出**
* 输出字符串中出现大写字母的数目。
**样例输入 Copy**
AbcD
**`样例输出 Copy`**
2
**`Java代码:`**
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
Main lanle = new Main();
while(sc.hasNext()){
String bb = sc.next();
char cc[] = bb.toCharArray();
System.out.println(lanle.cbb(cc));
}
}
public int cbb(char []cc){
int cb = 0;
for(int i=0;i
if(cc[i]>='A'&&cc[i]<='Z')
cb++;
}
return cb;
}
}
> 【说真的,我写Java完全是因为C语言学得时间太长了,不记得怎么获取字符串的单个字符了,而且CSDN的小伙伴们写的我有带你不太明白,好吧,我承认,我是个学渣,
> /(ㄒoㄒ)/~~】
# D、Kimi数列 #
**题目描述**
* Kimi最近在研究一个数列:
* F(0) = 7
* F(1) = 11
* F(n) = F(n-1) + F(n-2) (n≥2)
* Kimi称之为Kimi数列。请你帮忙确认一下数列中第n个数是否是3的倍数。
**输入**
* 输入包含多组数据。
* 每组数据包含一个整数n,(0≤n≤30)。
**输出**
* 对应每一组输入有一行输出。
* 如果F(n)是3的倍数,则输出“Yes”;否则输出“No”。
**样例输入 Copy**
0
1
2
3
4
5
**样例输出 Copy**
No
No
Yes
No
No
No
**C语言代码:**
#include
int cbb();
int main()
{
int n;
while(scanf("%d",&n)!=EOF){
if(0<=n&&n<=30){
if(cbb(n)%3==0){
printf("Yes\n");
}
else
printf("No\n");
}
}
}
int cbb(int n){
if(n==0)
return 7;
if(n==1)
return 11;
if(n>=2)
return cbb(n-1)+cbb(n-2);
}
> 【这个代码绝对是我自己写的,C语言当时正打开着,于是乎,写了C语言的,这个题目其实很好写,递归表达式都给你了,真的很方便了】
# E、蜂房 #
**题目描述**
* 有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行。请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数。 其中,蜂房的结构如下所示。
![在这里插入图片描述][20210314220441390.png]
**输入**
* 多组数据输入,每组数据包含两个正整数a, b,且 a
**输出**
* 蜜蜂从蜂房a爬到蜂房b的可能路线数。
**样例输入 Copy**
1 2
3 4
**样例输出 Copy**
1
1
**`C语言代码:`**
#include
int cbb();
int main()
{
int a,b;
while(scanf("%d %d",&a,&b)!=EOF){
printf("%d\n",cbb(a,b));
}
}
int cbb(int a,int b){
if((b-a)==1)
return 1;
if((b-a)==2)
return 2;
if((b-a)>2)
return cbb(a,b-1)+cbb(a,b-2);
}
> 【这个题目老师上课的时候讲过,发现其中规律,其实和斐波那契数列是一样的,那么从a到b的路径可以转换的哦,偷偷说一句,这个题我也是参考了别的小伙伴们的,我道歉,我错了,我真的下次不会我会回来的】
# F、骨牌覆盖 #
**题目描述**
* 用大小为1×2的骨牌铺满一个大小为2×n的长方形方格,编写一个程序,输入n,输出铺放方案总数。例如,输入n=3,即大小为2×3的方格,输出3。3种骨牌铺放方案如下图所示:
![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1ODIzMTE4_size_16_color_FFFFFF_t_70]
**输入**
* 多组测试用例,每一组是一个正整数。
**输出**
* 每组输出占一行。 只需要输出铺放方案总数,不需要输出具体的铺放方案。
**样例输入 Copy**
3
**样例输出 Copy**
3
**`C语言代码:`**
#include
int cbb();
int main()
{
int n;
while(scanf("%d",&n)!=EOF){
printf("%d\n",cbb(n));
}
}
int cbb(int n){
if(n==1)
return 1;
if(n==2)
return 2;
if(n>2)
return cbb(n-1)+cbb(n-2);
}
> 【这个和上面那个性质上是一样的,别问为什么,问就是来连递归表达式都一样的啊,不过也是推导出来的哦,但是老师上课也讲解了,规律还是那个,没错,就是 斐波那契数列哈哈哈哈哈哈】
> 干到了一点多才睡觉,完犊子了。。。
> ”橘子不是唯一的水果“
> ”但橙子是。“
> ——《如此可爱的我们》
[20210314220441390.png]: /images/20210516/06fa2e2459e04d1d8867016d2cee1130.png
[watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1ODIzMTE4_size_16_color_FFFFFF_t_70]: /images/20210516/08169fcd32804782b468745889850e21.png