Java递归例题

it2026-09-29  7

冰雹数 任意给定一个正整数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,否则按无效代码处理。

static int n; static int max = n; public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); n = sc.nextInt(); chang(n); System.out.println(max); } public static int chang(int n) { if(n>max) max=n; if(n==1) return 1; if (n % 2 == 0) return chang(n=n/2); return chang(n=n*3+1); }

李白打酒 话说大诗人李白,一生好饮。幸好他从不开车。 一天,他提着酒壶,从家里出来,酒壶中有酒2斗。他边走边唱:

无事街上走,提壶去打酒。 逢店加一倍,遇花喝一斗。

这一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了。

请你计算李白遇到店和花的次序,可以把遇店记为a,遇花记为b。则:babaabbabbabbbb 就是合理的次序。像这样的答案一共有多少呢?请你计算出所有可能方案的个数(包含题目给出的)。

注意:通过浏览器提交答案。答案是个整数。不要书写任何多余的内容。

public static void main(String[] args) { // TODO Auto-generated method stub f(5, 9, 2); System.out.println(ans); } private static void f(int dian, int hua, int jiu) { // TODO Auto-generated method stub if (dian == 0 && hua == 0 && jiu == 1) ans++; if (dian > 0) f(dian - 1, hua, jiu * 2); if (hua > 0) f(dian, hua - 1, jiu - 1); }

温馨提示: 喜欢灰碟分享的小伙伴不要忘记关注噢~这样子,想找我时就不会迷路啦*

联系方式: Vx+:LHD7575

最新回复(0)