第七届蓝桥杯省赛——8冰雹数(递归)

news2024/11/18 14:45:08

题目:

任意给定一个正整数N,

如果是偶数,执行: N / 2

如果是奇数,执行: N * 3 + 1

生成的新的数字再执行同样的动作,循环往复。

通过观察发现,这个数字会一会儿上升到很高,

一会儿又降落下来。

就这样起起落落的,但最终必会落到“1”

这有点像小冰雹粒子在冰雹云中翻滚增长的样子。

比如N=9

9,28,14,7,22,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1

可以看到,N=9的时候,这个“小冰雹”最高冲到了52这个高度。

输入格式:

一个正整数N(N<1000000)

输出格式:

一个正整数,表示不大于N的数字,经过冰雹数变换过程中,最高冲到了多少。

例如,输入:

10

程序应该输出:

52

再例如,输入:

100

程序应该输出:

9232

资源约定:

峰值内存消耗(含虚拟机) < 256M

CPU消耗 < 1000ms

请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。

注意:不要使用package语句。不要使用jdk1.7及以上版本的特性。

注意:主类的名字必须是:Main,否则按无效代码处理。

分析:

这个题非常容易因为没有注意到这句话表示不大于N的数字导致粗心做错,我们先来做一遍经常犯的错误示范

1,输入n的值然后通过递归做这道题,由题意得,递归的结束条件是当n等于1时结束,如果n为偶数,那么n/2;如果为奇数n*3+1,那我们就一直调用自身直到n等于1(结束条件)为止,并在这个过程中不断的把n相对大的值给max,结束循环。输出max就是冰雹最高高度

如下图:

我们发现当n等于10的时候n等于16,n=100的时候输出100,都跟题意相差很大,那么我们重新读题,第二遍读题中发现

输出的不是n的变化过程,而是n之前的数字(包括n)就比如说n=10,输出就是1-10这十个数字每个都要进行变换,然后取这十个数字变化过程的最大值。那么我们就需要根据n的值建一个for循环,循环n次。

下面是完整正确步骤:

完整步骤:

package 历届刷题前7214;

import java.util.Scanner;

public class 冰雹数 {
    static int max = 0;

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        sc.close();
        for (int i = 1; i < n; i++) {
            f(i);
        }
        System.out.println(max);

    }

    private static void f(int n) {
        if (n == 1) {
            return;
        }
        max = n > max ? n : max;

        f(n % 2 == 0 ? n / 2 : n * 3 + 1);

    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/348626.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

海外问卷调查怎么做?手把手教会你如何薅老外的羊毛

问卷调查相信大家都不陌生。许多组织在推出新项目或新产品之前&#xff0c;会对全社会进行问卷调查&#xff0c;调查消费者或受众对产品的期望和价格的接受范围。东哥今天给大家介绍的就是海外问卷调查项目&#xff0c;外国人的羊毛&#xff0c;带你们薅定了&#xff01;参与海…

基于ArgoCD实现k8s环境下的持续部署

什么是 argo CD Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes. Argo CD是一个基于Kubernetes的声明式的GitOps工具。 这里我们引入了一个新的概念&#xff0c; 什么是GitOps GitOps是以Git为基础&#xff0c;使用CI/CD来更新运行在云原生环境…

电脑资料如何转移到新电脑?教你3种数据迁移技巧

当下&#xff0c;电脑越来越普及&#xff0c;更换频率也越来越高。当我们购买新电脑&#xff0c;需要将旧电脑上的文件资料迁移到新电脑上&#xff0c;方便使用&#xff0c;电脑资料如何转移到新电脑&#xff1f;其实我们完全可以自己解决哦&#xff0c;下面一起来看下电脑资料…

VMware 修复了三个身份认证绕过漏洞

Bleeping Computer 网站披露&#xff0c;VMware 近期发布了安全更新&#xff0c;以解决 Workspace ONE Assist 解决方案中的三个严重漏洞&#xff0c;分别追踪为 CVE-2022-31685&#xff08;认证绕过&#xff09;、CVE-2022-31686 &#xff08;认证方法失败&#xff09;和 CVE-…

python应用之小麦生育期气象因子计算——基于pandas库

背景 本次介绍一下python的pandas包操作Excel&#xff08;或者CSV等&#xff09;&#xff0c;应用情景是计算不同站点小麦多年生育期内的气象因子的特征&#xff08;积温、降雨、辐射等&#xff09; 主要涉及以下知识点&#xff1a; 儒略日转换数据框值获取与字符串加法基于que…

.md文件转.pdf文件

一、安装VS code vscode是一个轻量级的、可扩展性十分强的开发编辑器。过程略&#xff0c;比较简单。 二、安装插件Markdown PDF 直接 install 就可以了。 我这里出现了安装失败的情景&#xff0c;这时候可以通过它给的提示&#xff0c;安转markdown-pdf 的 .vsix 文件&#…

数据分析与SAS学习笔记2

SAS在企业使用的情况&#xff1a; SAS是一个很昂贵的商业软件。在企业中使用SAS比较多&#xff0c;在企业界中是比较流行&#xff0c;在学术界使用R比较多。 SAS简介&#xff1a;统计分析系统 处理生物分析数据。 SAS成为统计领域的国际标准软件&#xff0c;服务全球50000多家…

顶象业务安全大讲堂全新升级,挖洞大神喊你来get 挖洞秘籍啦!

CSDN直播间&#xff1a; 红队外网打点与情报收集策略——「业务安全大讲堂第二季第1期」https://live.csdn.net/room/dingxiangtech/rBN4xrOp 顶象业务安全大讲堂第二季将于2月23日重磅回归&#xff0c;本季业务安全大讲堂继续以业务安全为主题&#xff0c;为大家带来业务安全…

网络渗透之信息搜集

网络渗透之信息搜集一、信息搜集1.1 概念1.2 分类1.3 收集那些信息二、域名信息收集2.1 域名介绍2.2 域名分类2.3 域名信息查询- whois2.3.1 whois2.3.2 whois查询2.3.3 whois查询方法2.4 域名信息收集-备案信息三、子域名信息收集四、IP地址信息收集4.1 IP反查域名4.2 域名查询…

UVa 1343 The Rotation Game 旋转游戏 IDA* BFS 路径还原

题目链接&#xff1a;The Rotation Game 题目描述&#xff1a; 给定二十四个整数&#xff0c;这二十四个整数由八个一&#xff0c;八个二&#xff0c;八个三组成&#xff0c;从左到右&#xff0c;从上到下依次描述下图方格中的数字&#xff1a; 例如上图左边对应的输入就是[1,…

Java中List排序的3种方法!

引用&#xff1a;https://blog.csdn.net/sinat_32849897/article/details/122098256 在某些特殊的场景下&#xff0c;我们需要在 Java 程序中对 List 集合进行排序操作。比如从第三方接口中获取所有用户的列表&#xff0c;但列表默认是以用户编号从小到大进行排序的&#xff0c…

acwing 2 普通背包 2维做法的坑

背包问题应该都挺熟了&#xff0c;但还是放一下题目 无论是一维还是二维的解法&#xff0c;思路都比较一致&#xff0c;就是用一个二维的dpdpdp矩阵&#xff0c;dp[i][j]dp[i][j]dp[i][j] 的定义为前 iii 个元素的最优组合在容量为 jjj 的背包的最大价值。 这个定义非常的巧妙…

前缀和-蓝桥杯

一、前缀和的概念数组a[0]~ a[n-1]&#xff0c;前缀和sum[i]等于a[0] ~ a[i]的和:sum[0] a[0]sum[1] a[0] a[1]sum[2] a[0] a[1] a[2] ......在O(n)时间内求所有前缀和: sum[i] sum[i-l] a[i]a[0]一般不用。二、前缀和与区间问题预计算出前缀和&#xff0c;能快速计算出区…

C语言结构体(初阶)声明、初始化、成员访问、传参

目录结构体类型的声明结构体变量的定义和初始化结构体成员访问结构体传参1.结构体类型的声明//1. struct Book {char name[20];int price; //成员列表 }b3,b4,b5;//全局变量 int main() {struct Book b1;//b1,b2局部变量struct Book b2;return 0; }//2. struct Book {char n…

重磅!ChatGPT席卷全球,Salesforce将推出EinsteinGPT!

2月9日&#xff0c;Salesforce首席执行官Marc Benioff在Twitter上发布了这样一则推文&#xff0c;表示将于3月7日的TrailblazerDX 23上发布Salesforce EinsteinGPT&#xff0c;随后Salesforce的官方Twitter也进行了转发。 虽然还没有正式的新闻稿&#xff0c;但不少业内人士猜测…

C++【模板初阶】

✨个人主页&#xff1a; Yohifo &#x1f389;所属专栏&#xff1a; C修行之路 &#x1f38a;每篇一句&#xff1a; 图片来源 No one saves us but ourselves, no one can and no one may. We ourselves must walk the path. 除了我们自己&#xff0c;没有人能拯救我们&#xf…

FreeRTOS-Tickless低功耗模式 | FreeRTOS十四

目录 说明&#xff1a; 一、低功耗模式简介 1.1、STM32低功耗模式 二、Tickless模式 2.1、Tickless模式如何功耗 2.2、Tickless模式设计思想 2.3、为了降低功耗&#xff0c;又不影响系统运行&#xff0c;怎么能做到呢&#xff1f; 三、Tickless模式修改配置 3.1、配置…

如何提升 ETF 期权隐含波动率和希腊值的计算速度?

期权的隐含波动率可以反应市场对未来的预期&#xff0c;通常使用牛顿法和二分法来计算。这两种方法都需要频繁迭代&#xff0c;且迭代次数不能确定&#xff0c;核心代码无法向量化&#xff0c;因此只能通过循环来逼近求解。这就导致在期权相关计算中&#xff0c;隐含波动率往往…

PO模式在Selenium中简单实践

初识PO模式 PO&#xff08;PageObject&#xff09;是一种设计模式。简单来说就是把一些繁琐的定位方法、元素操作方式等封装到类中&#xff0c;通过类与类之间的调用完成特定操作。 PO被认为是自动化测试项目开发实践的最佳设计模式之一。 在学习PO模式前&#xff0c;可以先…

InstructGPT笔记

一、InstructGPT是在GPT3上微调&#xff0c;ChatGPT是在GPT3.5上微调 二、该论文展示了怎么样对语言模型和人类意图之间进行匹配&#xff0c;方法是在人类的反馈上进行微调。 **三、方法简介&#xff1a;**收集很多问题&#xff0c;使用标注工具将问题的答案写出来&#xff0…