P5727 【深基5.例3】冰雹猜想

【深基5.例3】冰雹猜想 - 洛谷icon-default.png?t=N7T8https://www.luogu.com.cn/problem/P5727这种方法比较繁琐,预先定义固定的数组长度,很局限:

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int i=0;
        int[] a=new int[1000000];
        
        while(n!=1) {
        	a[i]=n;
        	i++;
        	if(n%2==1) {
        		n=n*3+1;
        	}else if(n%2==0) {
        		n=n/2;
        	}
        	
        }
        a[i]=1;
        
        
        for(int j=i;j>=0;j--) {
        		System.out.printf("%d"+" ",a[j]);
        }
    }
}

简化的方法如下:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        hailstone(n);
    }

    public static void hailstone(int n) {
        if (n == 1) {
            System.out.print(n);
        } else {
            hailstone((n % 2 == 0) ? n / 2 : n * 3 + 1);
            System.out.print(" " + n);
        }
    }
}

这段代码首先读取了输入的整数 n,然后调用名为 hailstone 的递归函数。如果当前数字 n 是 1,那么递归结束,直接输出 1;否则,根据当前数字是奇数还是偶数,递归调用 hailstone 函数。递归调用的顺序使得最终的输出是从最后的 1 开始的整个变化序列的倒序。

递归的终止条件是当输入的数字 `n` 等于 1 时,即 `n == 1`。在这种情况下,递归函数不再继续调用自身,而是直接输出当前的数字 1,结束递归。

相关推荐

  1. P57295.7】工艺品制作

    2024-03-28 19:10:01       51 阅读
  2. P5737】【7.3】闰年展示

    2024-03-28 19:10:01       39 阅读
  3. P57072.12】上学迟到题解

    2024-03-28 19:10:01       62 阅读
  4. P57173.习8】三角形分类

    2024-03-28 19:10:01       23 阅读
  5. P5719 【4.3】分类平均

    2024-03-28 19:10:01       55 阅读
  6. 洛谷P5318 【18.3】查找文献

    2024-03-28 19:10:01       48 阅读
  7. 7-1 冰雹猜想

    2024-03-28 19:10:01       62 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-28 19:10:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-28 19:10:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-28 19:10:01       87 阅读
  4. Python语言-面向对象

    2024-03-28 19:10:01       96 阅读

热门阅读

  1. Doris删除数据工具

    2024-03-28 19:10:01       65 阅读
  2. Qt消息机制和事件--2

    2024-03-28 19:10:01       50 阅读
  3. Python中的函数参数传递方式是怎样的?

    2024-03-28 19:10:01       42 阅读
  4. WSL2 (Ubuntu 22.04.3 LTS)安装docker

    2024-03-28 19:10:01       48 阅读
  5. Spring 生态系统概述(2024最新)

    2024-03-28 19:10:01       43 阅读
  6. Go打造REST Server【三】:用Web框架来实现

    2024-03-28 19:10:01       43 阅读
  7. linux连接不到docker端口

    2024-03-28 19:10:01       35 阅读
  8. C++(5): std::ofstream的使用

    2024-03-28 19:10:01       44 阅读
  9. 递归算法 分析json字符串,自制简易表达式

    2024-03-28 19:10:01       43 阅读
  10. 【备忘录】Docker 2375远程端口安全漏洞解决

    2024-03-28 19:10:01       31 阅读