2021-3-14开学第二周

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 <stdio.h>
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 <stdio.h>
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<cc.length;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 <stdio.h>
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的可能路线数。 其中,蜂房的结构如下所示。

在这里插入图片描述

输入

  • 多组数据输入,每组数据包含两个正整数a, b,且 a<b。

输出

  • 蜜蜂从蜂房a爬到蜂房b的可能路线数。

样例输入 Copy

1 2
3 4

样例输出 Copy

1
1

C语言代码:

#include <stdio.h>
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种骨牌铺放方案如下图所示:

在这里插入图片描述

输入

  • 多组测试用例,每一组是一个正整数。

输出

  • 每组输出占一行。 只需要输出铺放方案总数,不需要输出具体的铺放方案。

样例输入 Copy

 3

样例输出 Copy

3

C语言代码:

#include <stdio.h>
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);

}

【这个和上面那个性质上是一样的,别问为什么,问就是来连递归表达式都一样的啊,不过也是推导出来的哦,但是老师上课也讲解了,规律还是那个,没错,就是 斐波那契数列哈哈哈哈哈哈】
干到了一点多才睡觉,完犊子了。。。
”橘子不是唯一的水果“
”但橙子是。“
——《如此可爱的我们》

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

少年游四方

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值