重庆航运建设发展有限公司网站,个人网页设计链接,网页设计模板html代码教程,金泉网做网站电话题目#xff1a;任意给定一个正整数N#xff0c;如果是偶数#xff0c;执行#xff1a; N / 2如果是奇数#xff0c;执行#xff1a; N * 3 1生成的新的数字再执行同样的动作#xff0c;循环往复。通过观察发现#xff0c;这个数字会一会儿上升到很高#xff0c;一会…题目任意给定一个正整数N如果是偶数执行 N / 2如果是奇数执行 N * 3 1生成的新的数字再执行同样的动作循环往复。通过观察发现这个数字会一会儿上升到很高一会儿又降落下来。就这样起起落落的但最终必会落到“1”这有点像小冰雹粒子在冰雹云中翻滚增长的样子。比如N99,28,14,7,22,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1可以看到N9的时候这个“小冰雹”最高冲到了52这个高度。输入格式一个正整数NN1000000输出格式一个正整数表示不大于N的数字经过冰雹数变换过程中最高冲到了多少。例如输入10程序应该输出52再例如输入100程序应该输出9232资源约定峰值内存消耗含虚拟机 256MCPU消耗 1000ms请严格按要求输出不要画蛇添足地打印类似“请您输入...” 的多余内容。所有代码放在同一个源文件中调试通过后拷贝提交该源码。注意不要使用package语句。不要使用jdk1.7及以上版本的特性。注意主类的名字必须是Main否则按无效代码处理。分析这个题非常容易因为没有注意到这句话表示不大于N的数字导致粗心做错我们先来做一遍经常犯的错误示范1输入n的值然后通过递归做这道题由题意得递归的结束条件是当n等于1时结束如果n为偶数那么n/2如果为奇数n*31,那我们就一直调用自身直到n等于1(结束条件)为止并在这个过程中不断的把n相对大的值给max结束循环。输出max就是冰雹最高高度如下图我们发现当n等于10的时候n等于16n100的时候输出100都跟题意相差很大那么我们重新读题第二遍读题中发现输出的不是n的变化过程而是n之前的数字包括n就比如说n10输出就是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);}
}